Aula 05 - Interfaces e Composição 🧩
O Segredo da Flexibilidade em Go
Agenda de Hoje 📅
- O Conceito de Interfaces
- Implementação Implícita (Duck Typing)
- Polimorfismo na Prática
- Composição vs Herança
- Embedding de Structs
- Mini-Projeto: Sistema de Pagamentos
1. O que são Interfaces? 🔌
- Define O Que um objeto faz, não Como.
- É um conjunto de assinaturas de métodos.
2. Duck Typing em Go 🦆
"Se caminha como pato e faz quack como pato..."
- Não existe a palavra
implements. - Se você tem os métodos, você é o tipo.
3. Polimorfismo 🎭
func ExecutarImpressao(d Documento) {
fmt.Println(d.Imprimir())
}
// Aceita PDF, Docx, TXT... qualquer um que "Imprima".
4. Composição (O Diferencial) 🏗️
- Go não tem herança (
class A extends B). - Usamos Embedding para reutilizar comportamento.
5. Exemplo de Composição 🚲
6. Diagrama de Composição 📊
classDiagram
class Motor { +Ligar() }
class Carro { +Motor motor }
class Caminhao { +Motor motor }
Carro *-- Motor
Caminhao *-- Motor
7. A Interface Vazia: any ☁️
interface{}aceita qualquer valor.- Útil para funções genéricas (ex:
fmt.Println). - Cuidado: Perde a segurança de tipos!
Resumo da Aula ✅
- Interfaces focam em comportamento.
- Composição é mais simples e flexível que herança.
- "Aceite interfaces, retorne structs".
Próxima Aula: Tratamento de Erros ⚠️
- Por que não temos
try/catch? - O valor
error. - Panic e Recover.
Dúvidas? 🤔
"Dê-me uma interface e eu moverei o mundo."