Especialização em Sistemas com Python & POO com Type Hints • Capítulo 09
🗺️ Mapa Conceitual do Tópico
classDiagram
class MeioPagamento {
<<abstract>>
#Decimal valor
+processar_transacao()* tuple
}
class PagamentoPix {
+chave_pix: str
+processar_transacao() tuple
}
class PagamentoCartao {
+numero_cartao: str
+processar_transacao() tuple
}
MeioPagamento <|-- PagamentoPix : Herança Nominal (IS-A)
MeioPagamento <|-- PagamentoCartao : Herança Nominal (IS-A)
🧬 1. Herança e Classes Abstratas (abc.ABC)
- Classes Abstratas: Herdam de
abc.ABC e marcam métodos obrigatórios com @abstractmethod, impedindo instanciação direta de contratos incompletos.
- Polimorfismo Nominal: Permite tratar instâncias de diferentes subclasses de forma uniforme através da interface da superclasse.
- Method Resolution Order (MRO): A ordem de resolução de herança é acessível via
Classe.mro(), governada pelo algoritmo C3 Linearization.
💻 Exemplo Prático e Tipado
"""
exemplo_09_heranca_e_polimorfismo.py - Gateway de Pagamentos Polimórfico
"""
from abc import ABC, abstractmethod
from decimal import Decimal
class GatewayPagamento(ABC):
def __init__(self, taxa_percentual: Decimal) -> None:
self.taxa = taxa_percentual
@abstractmethod
def autorizar(self, valor: Decimal) -> tuple[bool, Decimal]:
pass
class GatewayPix(GatewayPagamento):
def autorizar(self, valor: Decimal) -> tuple[bool, Decimal]:
tarifa = valor * self.taxa
return True, valor - tarifa
class GatewayCartao(GatewayPagamento):
def autorizar(self, valor: Decimal) -> tuple[bool, Decimal]:
tarifa = (valor * self.taxa) + Decimal("0.50")
return True, valor - tarifa
if __name__ == "__main__":
gateways: list[GatewayPagamento] = [
GatewayPix(taxa_percentual=Decimal("0.009")), # 0.9%
GatewayCartao(taxa_percentual=Decimal("0.025")), # 2.5%
]
valor_venda = Decimal("200.00")
for g in gateways:
ok, liquido = g.autorizar(valor_venda)
print(f"[{g.__class__.__name__}] Venda: R$ {valor_venda:.2f} -> Líquido: R$ {liquido:.2f}")
🔗 Recursos Pedagógicos do Capítulo 09
| Recurso Didático |
Finalidade |
Link de Acesso |
| 📊 Slides de Aula |
Apresentação visual interativa com Dark Mode e suporte a teclado |
Ver Slides |
| 🧠 Quiz Formativo |
Teste interativo de fixação com feedback imediato por alternativa |
Fazer Quiz |
| 💻 Exemplos de Código |
Demonstrações funcionais com Type Hints e saída no console |
Ver Exemplos |
| 🧩 Exercícios em 4 Níveis |
Lista progressiva de fixação com gabarito em bloco colapsável |
Resolver Exercícios |