🚀 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: Mago herda de Personagem.

🎭 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 Personagem tem o método atacar().
    • O Guerreiro ataca com uma espada.
    • O Mago ataca com uma bola de fogo.
    • O nome do método é o mesmo, mas a ação é diferente!

4. 📖 Exemplo Guiado: Desenhando Herança no Draw.io

  1. Crie a classe mãe Personagem no topo com os atributos - nome e - vida.
  2. Crie duas classes embaixo: Mago e Guerreiro.
  3. No Draw.io, use a linha de Generalização (seta com triângulo branco na ponta).
  4. Aponte a seta do Mago para o Personagem.
  5. Aponte a seta do Guerreiro para o Personagem.

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) e Guerreiro (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):

  1. Um Carro herda de Motor.
  2. Um Gato herda de Animal.
  3. Um Livro herda de Página.

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

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 08 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_08_heranca.md
│   └── codigos/
│       └── cap08/
│           └── heranca_rpg.png

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


Capitulo Anterior | Proximo Capitulo