🚀 Capítulo 08: Herança e Polimorfismo (Tema: RPG de Fantasia)
NOTE
Este capítulo utiliza a temática de RPG de Fantasia para explicar a herança. Todos os heróis têm características básicas, mas cada classe (Mago, Guerreiro) tem seus próprios poderes!
1. 🎯 Objetivo da Aula
Compreender o conceito de Herança (Generalização) e Polimorfismo no Diagrama de Classes, e como representá-los graficamente.
2. 🏢 O Cenário Prático (Seu Desafio)
Você está desenvolvendo um jogo de RPG no estilo D&D. No jogo, temos Magos e Guerreiros. Em vez de digitar os atributos nome e vida em todas as classes, vamos criar uma classe mãe chamada Personagem e fazer as outras herdarem dela. Seu desafio é desenhar essa árvore genealógica no Draw.io!
3. 🧠 Fundamentos: A Teoria Traduzida
🧬 1. Herança (Generalização)
É quando uma classe (Subclasse ou Filha) aproveita os atributos e métodos de outra classe (Superclasse ou Mãe).
- Seta: Uma linha com uma ponta de seta em formato de triângulo vazado (sem preenchimento), apontando para a classe Mãe.
- Exemplo:
Magoherda dePersonagem.
🎭 2. Polimorfismo
Significa “muitas formas”. É quando várias subclasses têm o mesmo método, mas cada uma executa de um jeito diferente.
- Exemplo: A classe
Personagemtem o métodoatacar().- O
Guerreiroataca com uma espada. - O
Magoataca com uma bola de fogo. - O nome do método é o mesmo, mas a ação é diferente!
- O
4. 📖 Exemplo Guiado: Desenhando Herança no Draw.io
- Crie a classe mãe
Personagemno topo com os atributos- nomee- vida. - Crie duas classes embaixo:
MagoeGuerreiro. - No Draw.io, use a linha de Generalização (seta com triângulo branco na ponta).
- Aponte a seta do
Magopara oPersonagem. - Aponte a seta do
Guerreiropara oPersonagem.
5. 🛠️ Prática Obrigatória 1: Criando a Árvore de RPG
No Draw.io, monte o cenário do exemplo guiado:
- Classe Mãe:
Personagem(com o método+ atacar()). - Classes Filhas:
Mago(atributo:+ mana) eGuerreiro(atributo:+ forca). - Conecte-as usando a seta de Herança correta.
- Exporte a imagem.
6. 🛠️ Prática Obrigatória 2: Identificando a Herança
Diga qual das opções abaixo representa uma relação de herança correta (É-UM):
- Um
Carroherda deMotor. - Um
Gatoherda deAnimal. - Um
Livroherda dePágina.
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 08 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_08_heranca.md
│ └── codigos/
│ └── cap08/
│ └── heranca_rpg.png9. 💡 Checkpoint de Lógica
Se a classe Personagem tiver o método atacar(), a classe Mago precisa escrever o método atacar() de novo dentro dela para poder usar? (Dica: Pense no conceito de herança).
10. 🔥 Desafio de Fixação
Pesquise o que é uma Classe Abstrata na UML (Dica: É uma classe que serve apenas de molde e não pode gerar objetos diretamente).
11. 🔑 Gabarito de Código/Fórmulas
Resposta da Prática 2: A opção 2 está correta. Um Gato É UM Animal. As outras opções são relações de composição/agregação (Um carro TEM UM motor, um livro TEM páginas).