🚀 Capítulo 07: Associações e Multiplicidade (Tema: Game of Thrones)
NOTE
Este capítulo utiliza a temática de Game of Thrones para explicar as associações. Em Westeros, as famílias e os personagens estão todos conectados por alianças complexas!
1. 🎯 Objetivo da Aula
Compreender o conceito de Associação entre classes e como definir a Multiplicidade (quantidade) nesses relacionamentos.
2. 🏢 O Cenário Prático (Seu Desafio)
Você é o Meistre de Porto Real. Precisa mapear as Grandes Casas de Westeros e seus membros. Uma Casa tem vários personagens, mas um personagem só pode pertencer a uma Casa por vez (lealdade!). Seu desafio é modelar essa relação no Draw.io usando as linhas e números corretos!
3. 🧠 Fundamentos: A Teoria Traduzida
As classes raramente trabalham sozinhas. Elas se relacionam. O relacionamento mais comum é a Associação (uma linha simples ligando as duas classes).
🔢 O que é Multiplicidade?
São os números que colocamos nas pontas da linha para dizer quantos objetos de um lado se relacionam com quantos do outro.
Os símbolos mais comuns são:
1: Exatamente um.0..*: Zero ou muitos (infinito).1..*: Um ou muitos (pelo menos um).0..1: Zero ou um (opcional).
🏰 Exemplo de Westeros:
- Classe
Casae ClassePersonagem. - Uma
Casatem de1..*(um ou muitos)Personagens. - Um
Personagempertence a exatamente1Casa.
No Draw.io, desenhamos uma linha entre as duas classes e colocamos 1 perto da classe Casa e 1..* perto da classe Personagem.
4. 📖 Exemplo Guiado: Relacionamento 1 para Muitos
Pense em um sistema de banco:
- Classe
Clientee ClasseContaCorrente. - Um
Clientepode ter1..*contas (pelo menos uma). - Uma
ContaCorrentepertence a exatamente1cliente. - Isso é uma associação de 1 para muitos (1:N).
5. 🛠️ Prática Obrigatória 1: Modelando Westeros
No Draw.io, crie o diagrama com as duas classes:
- Classe
Casa(Atributo:nome). - Classe
Personagem(Atributo:nome). - Ligue as duas com uma associação.
- Coloque a multiplicidade correta: Uma Casa pode ter muitos personagens (
0..*), mas um personagem pertence a apenas uma casa (1). - Exporte a imagem.
6. 🛠️ Prática Obrigatória 2: Interpretando Números
Dada a relação entre Professor e Turma:
Professor 1 ----- 0..* Turma
Responda:
- Um professor pode estar sem nenhuma turma?
- Uma turma pode ter mais de um professor?
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 07 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_07_associacoes.md
│ └── codigos/
│ └── cap07/
│ └── associacao_westeros.png9. 💡 Checkpoint de Lógica
Se a multiplicidade for 0..* de ambos os lados (Muitos para Muitos), como fazemos para implementar isso no banco de dados? (Dica: Lembra da tabela associativa ou tabela meio?).
10. 🔥 Desafio de Fixação
Pesquise o que significa uma Auto-associação (quando uma classe se associa com ela mesma, ex: Personagem é casado com outro Personagem).
11. 🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 2:
- Sim, a multiplicidade
0..*indica que o professor pode ter zero turmas. - Não, o número
1do lado do Professor indica que a turma tem exatamente um professor.