🚀 Capítulo 11: A Magia da Herança
NOTE
Este capítulo utiliza a temática de Harry Potter para explicar o conceito de Herança em Programação Orientada a Objetos com Python. Aprenda a reaproveitar código de outras classes!
🎯 Objetivo da Aula
Compreender o conceito de Herança em POO, aprendendo como uma classe filha pode herdar atributos e métodos de uma classe mãe em Python, e como usar a função super().
🏢 O Cenário Prático (Seu Desafio)
Na escola de magia de Hogwarts, todos os bruxos são pessoas (têm nome, idade e sabem falar). Mas um Professor de magia tem coisas que um aluno comum não tem (como a matéria que ele leciona e o poder de dar detenção).
Em vez de criarmos uma classe Aluno e uma classe Professor repetindo o código de nome e idade em ambas, nós criamos uma classe base chamada Bruxo e dizemos que as outras duas herdam dela!
- A Herança nos poupa o trabalho de digitar o mesmo código várias vezes. Seu desafio é organizar a árvore genealógica de Hogwarts!
🧠 Fundamentos: A Teoria Traduzida
🧙♂️ 1. A Classe Base (Mãe):
É a classe que tem as características comuns a todos.
class Bruxo:
def __init__(self, nome, casa):
self.nome = nome
self.casa = casa
def lancar_feitico(self):
print(f"{self.nome} lançou um feitiço!")🎓 2. A Classe Filha (Herdando):
Para herdar, colocamos o nome da classe mãe entre parênteses na criação da classe filha.
class Aluno(Bruxo):
def estudar(self):
print(f"{self.nome} está estudando na biblioteca.")- O
Alunoagora tem acesso aonome,casae ao métodolancar_feitico(), mesmo sem termos digitado isso dentro dele!
📖 Exemplo Guiado: Usando o super()
Se a classe filha precisar de um construtor __init__ próprio, ela deve chamar o construtor da classe mãe primeiro usando a função super()!
class Professor(Bruxo):
def __init__(self, nome, casa, materia):
# Chama o construtor da classe Bruxo para guardar nome e casa
super().__init__(nome, casa)
# Guarda a matéria que é exclusiva do professor
self.materia = materia
prof = Professor("Snape", "Slytherin", "Poções")
print(prof.nome) # Funciona! Herdado de Bruxo.
print(prof.materia) # Funciona! Exclusivo de Professor.🛠️ Prática Obrigatória 1: Criando a Herança
- Crie uma classe chamada
Quadribolque herde da classeBruxoe adicione um método chamadojogarque imprima"Jogando Quadribol!".
🛠️ Prática Obrigatória 2: O Super
- Para que serve a função
super()dentro do método__init__de uma classe filha?
📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
Neste curso, você entregará suas atividades enviando o código para o seu repositório no GitHub usando o aplicativo GitHub Desktop. Siga o passo a passo detalhado:
- Verifique a estrutura: Certifique-se de que sua estrutura de pastas final está idêntica à mostrada abaixo.
- Abra o GitHub Desktop: Certifique-se de que o repositório do seu curso está selecionado no canto superior esquerdo.
- Visualize as alterações: Na aba Changes (à esquerda), você verá todos os arquivos que criou ou modificou nesta aula.
- Faça o Commit:
- No campo Summary (na parte inferior esquerda), digite uma mensagem curta descrevendo o que fez, ex:
Finaliza atividades do Capítulo. - Clique no botão azul Commit to main (ou o nome da sua branch).
- No campo Summary (na parte inferior esquerda), digite uma mensagem curta descrevendo o que fez, ex:
- Envie para a Nuvem (Push): No topo da tela, clique no botão Push origin. Isso enviará seu código do seu computador para o seu perfil no GitHub.
- ⚠️ IMPORTANTE (Repositório Público): Para que o professor consiga corrigir, o seu repositório no GitHub DEVE SER PÚBLICO. Repositórios privados não podem ser visualizados por quem não foi convidado.
- Como entregar no Microsoft Teams:
- Copie o link do seu repositório no GitHub (ex:
https://github.com/seu-usuario/seu-repositorio). - Abra a tarefa correspondente no Microsoft Teams.
- Clique no botão Adicionar trabalho (ou Add work).
- Selecione a opção Link no menu lateral.
- Cole o link do GitHub no campo “Endereço Web” e digite um texto (ex:
Meu Repositório) no campo “Texto a ser exibido”. - Clique em Anexar.
- MUITO IMPORTANTE: Clique no botão Entregar (ou Turn in) no canto superior direito para concluir o envio!
- Copie o link do seu repositório no GitHub (ex:
📂 Estrutura de Pastas
spec_backend_com_python_e_fastapi/
├── capitulos/
│ └── capitulo_11_harry_potter.md💡 Checkpoint de Lógica
O Python aceita Herança Múltipla, ou seja, uma classe filha pode herdar de duas ou mais classes mães ao mesmo tempo! Basta colocar os nomes separados por vírgula dentro dos parênteses. (Mas cuidado, isso pode deixar o código confuso!).
🔥 Desafio de Fixação (Opcional)
Pesquise o que é Polimorfismo em POO e como podemos reescrever um método da classe mãe dentro da classe filha em Python.
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
class Quadribol(Bruxo):
def jogar(self):
print("Jogando Quadribol!")Gabarito da Prática 2:
- Serve para chamar o método construtor da classe mãe (base), garantindo que os atributos que ela exige sejam criados corretamente antes de criarmos os atributos específicos da classe filha.