-
Notifications
You must be signed in to change notification settings - Fork 0
/
aula144.py
50 lines (38 loc) · 1.48 KB
/
aula144.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# Polimorfismo em Python Orientado a Objetos
# Polimorfismo é o princípio que permite que
# classes deridavas de uma mesma superclasse
# tenham métodos iguais (com mesma assinatura)
# mas comportamentos diferentes.
# Assinatura do método = Mesmo nome e quantidade
# de parâmetros (retorno não faz parte da assinatura)
# Opinião + princípios que contam:
# Assinatura do método: nome, parâmetros e retorno iguais
# SO"L"ID
# 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) -> None:
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(notificar: Notificacao):
notificar_enviar = notificar.enviar()
if notificar_enviar:
print('A notificação foi enviada')
else:
print('A notificação não foi enviada')
notificacao_email = NotificacaoEmail('Enviou essa bomba kkk')
notificar(notificacao_email)
notificar(NotificacaoSms('Olha a mensagem kkk'))