Domine as relações avançadas e a hierarquia entre objetos.
1. Todo e Parte (Básico 1)
Contexto: Agregação e Composição são formas especiais de associação.
Pergunta: Qual a principal diferença "existencial" entre uma Agregação e uma Composição? (Dica: Pense no tempo de vida dos objetos).
2. Herança e Generalização (Básico 2)
Contexto: A relação de herança permite reutilizar atributos e métodos.
Pergunta: Explique o conceito de Generalização. Use o exemplo de "Veículo", "Carro" e "Moto" para sua explicação.
3. Quantos são? (Intermediário 1)
Contexto: A multiplicidade define quantos objetos participam de uma relação.
Pergunta: O que significam as notações 1..* e 0..1 em uma extremidade de associação?
4. Classes de Abstração (Intermediário 2)
Contexto: Nem toda classe serve para gerar objetos (instâncias).
Pergunta: O que é uma Classe Abstrata e qual a sua utilidade em um projeto de arquitetura de software?
5. Desafio: Modelagem de Domínio Acadêmico (Desafio)
Contexto: Em uma universidade, um Curso é composto por várias Disciplinas. Se o curso for extinto, as disciplinas deixam de existir naquele contexto de grade curricular.
Pergunta: Qual relação UML melhor representa esse cenário? Agregação, Composição ou Herança? Justifique sua resposta desenhando a lógica dessa relação.
---
📚 Gabarito e Soluções Comentadas
Gabarito Explicado Respostas e explicações para os exercícios da **Aula 07**. --- ### ✅ 1. Agregação vs Composição (Básico) **Resposta Sugerida:** * **Agregação (Diamante Vazado):** Relação "todo-parte" fraca. Se o todo morre, a parte vive (ex: Professor e Departamento). * **Composição (Diamante Cheio):** Relação "todo-parte" forte. Se o todo morre, a parte morre (ex: Nota Fiscal e Itens da Nota). --- ### ✅ 2. Generalização/Herança (Básico) **Resposta Sugerida:** Representa a relação "É UM". Uma subclasse herda atributos e métodos da superclasse (ex: Carro herda de Veículo). --- ### ✅ 3. Multiplicidade (Intermediário) **Explicação:** * `1`: Exatamente um. * `0..*`: De zero a muitos. * `1..*`: De um a muitos. --- ### ✅ 4. Classes Abstratas (Intermediário) **Conceito:** Uma classe que não pode ser instanciada diretamente. Ela serve apenas como base para outras classes (ex: Classe `Animal` é abstrata, mas `Cachorro` é concreta). --- ### ✅ 5. Desafio: Modelando um Banco (Desafio) **Resolução Sugerida:** 1. **Composição:** Conta e Transações (se a conta for excluída, as transações perdem o sentido no contexto da conta). 2. **Herança:** ContaCorrente e ContaPoupanca herdando de Conta. 3. **Agregação:** Cliente e Contas (um cliente pode encerrar a conta, mas continuar sendo cliente cadastrado no banco). ---