🚀 Capítulo 09: Agregação e Composição (Tema: Lego / Mechas)
NOTE
Este capítulo utiliza a temática de Lego e Mechas (robôs gigantes) para explicar a diferença entre agregação e composição. Vamos construir um robô por partes!
1. 🎯 Objetivo da Aula
Compreender a diferença entre os relacionamentos de Agregação (Todo/Parte fraco) e Composição (Todo/Parte forte) no Diagrama de Classes.
2. 🏢 O Cenário Prático (Seu Desafio)
Você está na oficina construindo um Mecha (um robô gigante de combate). O Mecha é composto por várias partes: um Chassi, uma Bateria e Armas laser. Se o Mecha for destruído em combate, o chassi e a bateria deixam de existir. Mas as armas podem ser coletadas por outros robôs! Seu desafio é modelar essas conexões no Draw.io.
3. 🧠 Fundamentos: A Teoria Traduzida
Além da associação simples e da herança, as classes podem ter uma relação de Todo e Parte (uma classe é dona ou contém outra). Existem dois tipos:
💎 1. Composição (Relação Forte)
O objeto “Parte” não pode existir sem o objeto “Todo”. Se o Todo for destruído, a Parte morre junto.
- Símbolo: Uma linha com um losango preenchido (preto) na ponta que toca a classe “Todo”.
- Exemplo no Mecha:
MechaeBateria. (A bateria é feita sob medida e soldada no mecha. Se o mecha explode, a bateria já era).
🛡️ 2. Agregação (Relação Fraca)
O objeto “Parte” pode existir de forma independente do objeto “Todo”. Se o Todo for destruído, a Parte continua viva.
- Símbolo: Uma linha com um losango vazado (branco) na ponta que toca a classe “Todo”.
- Exemplo no Mecha:
MechaeArmas. (As armas são encaixadas. Se o mecha quebrar, podemos tirar as armas e colocar em outro).
4. 📖 Exemplo Guiado: Desenhando no Draw.io
- Crie a classe
Mechano centro. - Crie a classe
Bateriae a classeArma. - No Draw.io, procure pelos conectores com losango.
- Ligue a
BateriaaoMechausando o conector de Composição (losango preto no Mecha). - Ligue a
ArmaaoMechausando o conector de Agregação (losango branco no Mecha).
5. 🛠️ Prática Obrigatória 1: Construindo o Mecha
Monte o diagrama do exemplo guiado no Draw.io.
- Adicione uma nova classe chamada
Piloto. - Um
Mechatem umPiloto. Se o Mecha for destruído, o piloto morre junto ou ele pode ejetar e continuar vivo? Escolha o símbolo correto (Agregação ou Composição) para ligar oPilotoaoMecha. - Exporte a imagem.
6. 🛠️ Prática Obrigatória 2: Agregação ou Composição?
Diga se a relação abaixo é Agregação ou Composição:
“Um Pedido de compras em um site e os Itens do Pedido. Se cancelarmos o pedido, os itens dentro dele deixam de fazer sentido sozinhos.”
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 09 UML) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
extra_guia_de_modelagem_uml/
├── capitulos/
│ ├── capitulo_09_composicao.md
│ └── codigos/
│ └── cap09/
│ └── mecha_partes.png9. 💡 Checkpoint de Lógica
Pense em um Carro e um Motor. O motor pode ser retirado do carro e colocado em outro? Então essa relação é Agregação ou Composição?
10. 🔥 Desafio de Fixação
Pesquise como a linguagem de programação que você mais usa (Java, Python, C#) implementa a Composição (geralmente criando o objeto parte dentro do construtor da classe todo).
11. 🔑 Gabarito de Código/Fórmulas
Resposta da Prática 2: É Composição. Os itens de um pedido não existem sozinhos no sistema se o pedido for destruído.