Organizar código em classes e objetos — encapsulamento, herança, polimorfismo e camadas para sistemas mantíveis.
──────────────────────────────────────────────────────────── CLASSE — ESPECIFICAÇÃO ──────────────────────────────────────────────────────────── Pacote: [namespace / módulo] Classe: [Nome] Responsabilidade: [uma frase] Atributos: - [nome]: [tipo] — [descrição] Construtor: - [Nome]([params]): inicializa estado obrigatório Métodos públicos: + [nome]([params]): [retorno] — [o que faz] Métodos privados (se houver): - [nome]([params]): [detalhe interno] Invariantes: - [regra sempre verdadeira] ──────────────────────────────────────────────────────────── EXEMPLO — Atividade (domínio) ──────────────────────────────────────────────────────────── Pacote: dominio.atividades Classe: Atividade Responsabilidade: Representar um registro operacional rastreável Atributos: - id: UUID - dataHora: DateTime - descricao: string - status: StatusAtividade - idResponsavel: UUID Métodos públicos: + cancelar(motivo: string): void — altera status para CANCELADA se permitido + conferir(): void — altera para CONFERIDA Invariantes: - dataHora não pode ser futura em relação ao relógio do servidor
Curso em Vídeo (Guanabara): classes, objetos e pilares da POO.