Polimorfismo de sobreposição - Python Orientado a Objetos

This commit is contained in:
Luiz Otávio
2022-11-18 11:31:30 -03:00
parent 7fb319a301
commit d29a064ccf

View File

@@ -11,3 +11,42 @@
# Princípio da substituição de liskov
# Objetos de uma superclasse devem ser substituíveis
# por objetos de uma subclasse sem quebrar a aplicação.
# Sobrecarga de métodos (overload) 🐍 = ❌
# Sobreposição de métodos (override) 🐍 = ✅
from abc import ABC, abstractmethod
class Notificacao(ABC):
def __init__(self, mensagem):
self.mensagem = mensagem
@abstractmethod
def enviar(self) -> bool: ...
class NotificacaoEmail(Notificacao):
def enviar(self) -> bool:
print('E-mail: enviando - ', self.mensagem)
return True
class NotificacaoSMS(Notificacao):
def enviar(self) -> bool:
print('SMS: enviando - ', self.mensagem)
return False
def notificar(notificacao: Notificacao):
notificacao_enviada = notificacao.enviar()
if notificacao_enviada:
print('Notificação enviada')
else:
print('Notificação NÃO enviada')
notificacao_email = NotificacaoEmail('testando e-mail')
notificar(notificacao_email)
notificacao_sms = NotificacaoSMS('testando SMS')
notificar(notificacao_sms)