Cap 12: Diagrama de Classes (Conceitos)
🎯 Objetivo do Capítulo
Dominar a estrutura de classes, atributos e métodos, aplicando os modificadores de visibilidade e as associações fundamentais para criar um modelo de dados escalável.
🏢 O Cenário Corporativo (TecProExpress)
Na TecProExpress, o time de Backend está migrando do modelo de "Scripts de Banco" para a Orientação a Objetos em Java. Os desenvolvedores precisam saber: O que é um objeto vivo na memória? Como protegemos o saldo de uma conta de ser alterado por qualquer um?
"Seu desafio como Arquiteto de Dados é desenhar o molde das classes. Você deve definir quais informações são privadas (escondidas no cofre) e quais ações são públicas para os outros objetos."
🧠 Classes vs. Objetos (Instâncias)
- Classe: É o "Molde" ou a "Planta". Não tem dados reais ainda. (Ex: A classe
Motorista). - Objeto (Instância): É a "Vida" na memória RAM. Tem dados reais. (Ex: O motorista
João, CPF123.456...).
🔍 Anatomia de uma Classe UML
Uma classe é representada por um retângulo dividido em três partes:
- Nome: Substantivo no singular (Ex:
Produto). - Atributos (Dados): O que ele guarda. (Ex:
- preco: Double). - Métodos (Ações): O que ele faz. (Ex:
+ calcularDesconto()).
🛡️ Visibilidade (Encapsulamento)
Controlamos o acesso aos dados usando símbolos universais:
+(Public): Qualquer um pode acessar.-(Private): Somente a própria classe pode mexer. (O "Cofre").#(Protected): A classe e suas filhas (herança) podem acessar.
📊 Exemplo de Classe Protegida
🖇️ Relacionamentos (Associações)
As classes não vivem isoladas. Elas se conectam para realizar tarefas complexas.
1. Multiplicidade (Cardinalidade)
Indica quantos objetos podem se conectar:
1: Exatamente um (Obrigatório).0..*: Zero ou Muitos (Opcional).1..*: Pelo menos um (Obrigatório).
💡 Checkpoint de Lógica
Cap 11: Casos de Uso (Prática e Relações)
Dominar os conceitos básicos é apenas o começo. Na engenharia profissional, precisamos modelar como as funcionalidades dependem umas das outras através de relacionamentos formais da UML. 🛡️🧩
Cap 13: Herança e Polimorfismo
A Herança é o mecanismo onde uma classe "filha" herda automaticamente as características da classe "pai", permitindo a criação de sistemas modulares e a eliminação de redundância (DRY - Don't Repeat Yourself). 🛡️🧩