From d29a064ccfb90534d103f8ecb50d5e8845d4a266 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Ot=C3=A1vio?= Date: Fri, 18 Nov 2022 11:31:30 -0300 Subject: [PATCH] =?UTF-8?q?Polimorfismo=20de=20sobreposi=C3=A7=C3=A3o=20-?= =?UTF-8?q?=20Python=20Orientado=20a=20Objetos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aula144.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/aula144.py b/aula144.py index 2380f4d..bc9936d 100644 --- a/aula144.py +++ b/aula144.py @@ -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)