Capítulo 14: Herança (Reutilização de Código) 🐉🔥
Neste capítulo, vamos aprender a criar novas classes baseadas em classes que já existem usando a Herança, com o tema Dragon Ball!
📖 O que é Herança?
É o mecanismo pelo qual uma classe (chamada de classe filha ou subclasse) adquire as propriedades e comportamentos de outra classe (chamada de classe pai ou superclasse). Isso evita que tenhamos que reescrever código que já funciona!
📖 Exemplo Guiado: Linhagem Saiyajin
Vamos criar uma classe base Guerreiro e uma classe filha Saiyajin que herda tudo de Guerreiro e adiciona novos poderes!
- Crie o arquivo
heranca_saiyajin.cppna pastasrc/:
#include <iostream>
#include <string>
using namespace std;
// Classe Pai (Superclasse)
class Guerreiro {
public:
string nome;
int vida;
void atacar() {
cout << nome << " atacou!" << endl;
}
};
// Classe Filha (Subclasse) herdando de Guerreiro
// O ': public Guerreiro' indica a herança
class Saiyajin : public Guerreiro {
public:
int nivel_ki;
void transformar() {
cout << nome << " se transformou em Super Saiyajin! Ki subiu para " << nivel_ki * 10 << "!" << endl;
}
};
int main() {
// Objeto da classe filha
Saiyajin goku;
goku.nome = "Goku"; // Herdado de Guerreiro
goku.vida = 100; // Herdado de Guerreiro
goku.nivel_ki = 9000; // Específico de Saiyajin
cout << "--- Inicio do Combate ---" << endl;
goku.atacar(); // Método herdado
goku.transformar(); // Método próprio
return 0;
}🕹️ Como Executar e Testar no VS Code
- Abra o terminal integrado.
- Compile:
g++ heranca_saiyajin.cpp -o heranca_saiyajin - Execute:
./heranca_saiyajin
Resultado Esperado:
--- Inicio do Combate ---
Goku atacou!
Goku se transformou em Super Saiyajin! Ki subiu para 90000!📊 Ilustração Visual: Hierarquia de Classes
Veja a relação de herança entre as classes:
classDiagram class Guerreiro { +string nome +int vida +atacar() } class Saiyajin { +int nivel_ki +transformar() } Guerreiro <|-- Saiyajin
🛠️ Prática Obrigatória 1: Clã Uchiha
Crie um programa chamado heranca_ninja.cpp baseado em Naruto. Crie uma classe base Ninja (com nome e jutsu_basico()) e uma classe filha Uchiha (que herda de Ninja e adiciona o método ativar_sharingan()). Teste criando um objeto Uchiha (ex: Sasuke)!
🔑 Gabarito de Código
Prática 1: heranca_ninja.cpp
#include <iostream>
#include <string>
using namespace std;
class Ninja {
public:
string nome;
void jutsu_basico() {
cout << nome << " usou Jutsu de Substituicao!" << endl;
}
};
class Uchiha : public Ninja {
public:
void ativar_sharingan() {
cout << nome << " ativou o Sharingan! 👁️" << endl;
}
};
int main() {
Uchiha sasuke;
sasuke.nome = "Sasuke";
cout << "--- Batalha Ninja ---" << endl;
sasuke.jutsu_basico();
sasuke.ativar_sharingan();
return 0;
}📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
(Siga o padrão estabelecido no Guia)