🚀 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 Casa e Classe Personagem.
  • Uma Casa tem de 1..* (um ou muitos) Personagens.
  • Um Personagem pertence a exatamente 1 Casa.

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 Cliente e Classe ContaCorrente.
  • Um Cliente pode ter 1..* contas (pelo menos uma).
  • Uma ContaCorrente pertence a exatamente 1 cliente.
  • 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:

  1. Classe Casa (Atributo: nome).
  2. Classe Personagem (Atributo: nome).
  3. Ligue as duas com uma associação.
  4. Coloque a multiplicidade correta: Uma Casa pode ter muitos personagens (0..*), mas um personagem pertence a apenas uma casa (1).
  5. 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:

  1. Um professor pode estar sem nenhuma turma?
  2. Uma turma pode ter mais de um professor?

7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 07 UML) e clique em Commit to main.
  2. 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.png

9. 💡 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:

  1. Sim, a multiplicidade 0..* indica que o professor pode ter zero turmas.
  2. Não, o número 1 do lado do Professor indica que a turma tem exatamente um professor.

Capitulo Anterior | Proximo Capitulo