From 7f34112331462e3b1e7745fea1139775dd8d51a9 Mon Sep 17 00:00:00 2001 From: andressa-png Date: Wed, 19 Nov 2025 20:57:38 -0300 Subject: [PATCH] =?UTF-8?q?Exerc=C3=ADcios=20respondidos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- respExercicio11.py | 18 ++++++++++++ respExercicio12.py | 43 +++++++++++++++++++++++++++++ respExercicio13.py | 42 ++++++++++++++++++++++++++++ respExercicio14.py | 21 ++++++++++++++ respExercicio15.py | 30 ++++++++++++++++++++ respExercicio16.py | 31 +++++++++++++++++++++ respExercicio17.py | 58 +++++++++++++++++++++++++++++++++++++++ respExercicio18.py | 68 ++++++++++++++++++++++++++++++++++++++++++++++ respExercicio19.py | 44 ++++++++++++++++++++++++++++++ respExercicio20.py | 31 +++++++++++++++++++++ 10 files changed, 386 insertions(+) create mode 100644 respExercicio11.py create mode 100644 respExercicio12.py create mode 100644 respExercicio13.py create mode 100644 respExercicio14.py create mode 100644 respExercicio15.py create mode 100644 respExercicio16.py create mode 100644 respExercicio17.py create mode 100644 respExercicio18.py create mode 100644 respExercicio19.py create mode 100644 respExercicio20.py diff --git a/respExercicio11.py b/respExercicio11.py new file mode 100644 index 0000000..1e996af --- /dev/null +++ b/respExercicio11.py @@ -0,0 +1,18 @@ + +class Funcionario: + def __init__(self, nome, salario, cargo): + self.nome = nome + self.salario = salario + self.cargo = cargo + +class CalculadoraSalario: + def calcular_salario_liquido(self, funcionario, descontos): + return funcionario.salario - descontos + +class GeradorRelatorio: + def gerar_relatorio(self, funcionario): + return f"Relatório: {funcionario.nome} - {funcionario.cargo} - R$ {funcionario.salario}" + +class RepositorioFuncionario: + def salvar(self, funcionario): + print(f"Salvando {funcionario.nome} no banco de dados...") diff --git a/respExercicio12.py b/respExercicio12.py new file mode 100644 index 0000000..f942ba2 --- /dev/null +++ b/respExercicio12.py @@ -0,0 +1,43 @@ +from abc import ABC, abstractmethod + +class CalculadorDesconto(ABC): + @abstractmethod + def calcular(self, valor): + pass + +class DescontoEstudante(CalculadorDesconto): + def calcular(self, valor): + return valor * 0.90 + + +class DescontoFuncionario(CalculadorDesconto): + def calcular(self, valor): + return valor * 0.85 + +class DescontoVIP(CalculadorDesconto): + def calcular(self, valor): + return valor * 0.80 + +class ProcessadorPagamento: + def processar(self, valor, calculadora_desconto: CalculadorDesconto): + return calculadora_desconto.calcular(valor) + + +if __name__ == "__main__": + pagamento = ProcessadorPagamento() + valor_original = 1000.0 + + desconto_estudante = DescontoEstudante() + desconto_funcionario = DescontoFuncionario() + desconto_vip = DescontoVIP() + + print("Estudante:", pagamento.processar(valor_original, desconto_estudante)) + print("Funcionário:", pagamento.processar(valor_original, desconto_funcionario)) + print("VIP:", pagamento.processar(valor_original, desconto_vip)) + + class DescontoBlackFriday(CalculadorDesconto): + def calcular(self, valor): + return valor * 0.50 + + desconto_bf = DescontoBlackFriday() + print("Black Friday:", pagamento.processar(valor_original, desconto_bf)) diff --git a/respExercicio13.py b/respExercicio13.py new file mode 100644 index 0000000..69e7b45 --- /dev/null +++ b/respExercicio13.py @@ -0,0 +1,42 @@ + +class Veiculo: + def __init__(self, velocidade_maxima): + self.velocidade_atual = 0 + self.velocidade_maxima = velocidade_maxima + + def acelerar(self, valor): + nova_velocidade = self.velocidade_atual + valor + if nova_velocidade > self.velocidade_maxima: + self.velocidade_atual = self.velocidade_maxima + else: + self.velocidade_atual = nova_velocidade + + def frear(self, valor): + nova_velocidade = self.velocidade_atual - valor + if nova_velocidade < 0: + self.velocidade_atual = 0 + else: + self.velocidade_atual = nova_velocidade + + def get_velocidade(self): + return self.velocidade_atual + +class Carro(Veiculo): + def __init__(self): + super().__init__(180) + + +class Bicicleta(Veiculo): + def __init__(self): + super().__init__(50) + + +class Aviao(Veiculo): + def __init__(self): + super().__init__(900) + +class ControladorTrafego: + def controlar(self, veiculo: Veiculo): + veiculo.acelerar(100) + veiculo.frear(30) + return veiculo.get_velocidade() diff --git a/respExercicio14.py b/respExercicio14.py new file mode 100644 index 0000000..f14406e --- /dev/null +++ b/respExercicio14.py @@ -0,0 +1,21 @@ +from abc import ABC, abstractmethod + +class Trabalhavel(ABC): + @abstractmethod + def trabalhar(self): + pass + +class Alimentavel(ABC): + @abstractmethod + def comer(self): + pass + +class Descansavel(ABC): + @abstractmethod + def dormir(self): + pass + +class Programavel(ABC): + @abstractmethod + def programar(self): + pass diff --git a/respExercicio15.py b/respExercicio15.py new file mode 100644 index 0000000..30835cb --- /dev/null +++ b/respExercicio15.py @@ -0,0 +1,30 @@ +from abc import ABC, abstractmethod + +class ServicoNotificacao(ABC): + @abstractmethod + def enviar(self, mensagem): + pass + +class EmailService(ServicoNotificacao): + def enviar(self, mensagem): + print(f"Enviando email: {mensagem}") + + +class SMSService(ServicoNotificacao): + def enviar(self, mensagem): + print(f"Enviando SMS: {mensagem}") + + +class PushService(ServicoNotificacao): + def enviar(self, mensagem): + print(f"Enviando push: {mensagem}") + +class NotificacaoService: + def __init__(self, servico: ServicoNotificacao): + self.servico = servico # depende da abstração + + def notificar(self, mensagem): + self.servico.enviar(mensagem) + + + diff --git a/respExercicio16.py b/respExercicio16.py new file mode 100644 index 0000000..46c0f8b --- /dev/null +++ b/respExercicio16.py @@ -0,0 +1,31 @@ + +class ProcessadorPagamento: + def processar_pagamento(self, valor, cartao): + pass + + +class ProcessadorPagamentoInterno(ProcessadorPagamento): + def processar_pagamento(self, valor, cartao): + return f"Pagamento interno de R${valor} realizado no cartão {cartao}" + + +class PayPalAPI: + def make_payment(self, amount, credit_card_number): + return f"PayPal: Processando ${amount} no cartão {credit_card_number}" + +class PayPalAdapter(ProcessadorPagamento): + def __init__(self, paypal_api): + self.paypal_api = paypal_api + + def processar_pagamento(self, valor, cartao): + return self.paypal_api.make_payment(valor, cartao) + +class SistemaPagamento: + def __init__(self, processador): + self.processador = processador + + def realizar_pagamento(self, valor, cartao): + resultado = self.processador.processar_pagamento(valor, cartao) + print(resultado) + + diff --git a/respExercicio17.py b/respExercicio17.py new file mode 100644 index 0000000..56ab279 --- /dev/null +++ b/respExercicio17.py @@ -0,0 +1,58 @@ + +class Bebida: + def get_descricao(self): + pass + + def get_preco(self): + pass + +class Cafe(Bebida): + def get_descricao(self): + return "Café" + + def get_preco(self): + return 5.0 + + +class Cha(Bebida): + def get_descricao(self): + return "Chá" + + def get_preco(self): + return 3.0 + +class BebidaDecorator(Bebida): + def __init__(self, bebida): + self.bebida = bebida + + def get_descricao(self): + return self.bebida.get_descricao() + + def get_preco(self): + return self.bebida.get_preco() + +class LeiteDecorator(BebidaDecorator): + def get_descricao(self): + return self.bebida.get_descricao() + " com Leite" + + def get_preco(self): + return self.bebida.get_preco() + 2.0 + + +class AcucarDecorator(BebidaDecorator): + def get_descricao(self): + return self.bebida.get_descricao() + " com Açúcar" + + def get_preco(self): + return self.bebida.get_preco() + 0.5 + + +class ChantillyDecorator(BebidaDecorator): + def get_descricao(self): + return self.bebida.get_descricao() + " com Chantilly" + + def get_preco(self): + return self.bebida.get_preco() + 3.0 + + + diff --git a/respExercicio18.py b/respExercicio18.py new file mode 100644 index 0000000..101d0db --- /dev/null +++ b/respExercicio18.py @@ -0,0 +1,68 @@ + +class Amplificador: + def ligar(self): + print("Ligando amplificador") + + def definir_volume(self, volume): + print(f"Definindo volume para {volume}") + + +class DVDPlayer: + def ligar(self): + print("Ligando DVD player") + + def reproduzir(self, filme): + print(f"Reproduzindo {filme}") + + +class Projetor: + def ligar(self): + print("Ligando projetor") + + def modo_widescreen(self): + print("Modo widescreen ativado") + + +class Luzes: + def diminuir(self, nivel): + print(f"Diminuindo luzes para {nivel}%") + + +class PipocaPopper: + def ligar(self): + print("Ligando pipoqueira") + + def fazer_pipoca(self): + print("Fazendo pipoca") + +class HomeTheaterFacade: + def __init__(self): + self.amplificador = Amplificador() + self.dvd = DVDPlayer() + self.projetor = Projetor() + self.luzes = Luzes() + self.pipoca = PipocaPopper() + + def assistir_filme(self, filme): + print(f"Preparando para assistir {filme}...") + + self.amplificador.ligar() + self.amplificador.definir_volume(5) + + self.dvd.ligar() + + self.projetor.ligar() + self.projetor.modo_widescreen() + + self.luzes.diminuir(10) + + self.pipoca.ligar() + self.pipoca.fazer_pipoca() + + self.dvd.reproduzir(filme) + + def fim_filme(self): + print("Filme finalizado!") + + + diff --git a/respExercicio19.py b/respExercicio19.py new file mode 100644 index 0000000..2817078 --- /dev/null +++ b/respExercicio19.py @@ -0,0 +1,44 @@ + +class Observer: + def update(self, temperatura, umidade, pressao): + pass + +class EstacaoMeteorologica: + def __init__(self): + self.observers = [] + self.temperatura = 0 + self.umidade = 0 + self.pressao = 0 + + def adicionar_observer(self, observer): + self.observers.append(observer) + + def remover_observer(self, observer): + self.observers.remove(observer) + + def notificar_observers(self): + for obs in self.observers: + obs.update(self.temperatura, self.umidade, self.pressao) + + def definir_medicoes(self, temperatura, umidade, pressao): + self.temperatura = temperatura + self.umidade = umidade + self.pressao = pressao + self.notificar_observers() + +class DisplayTemperatura(Observer): + def update(self, temperatura, umidade, pressao): + print(f"Display Temperatura: {temperatura}°C") + + +class DisplayUmidade(Observer): + def update(self, temperatura, umidade, pressao): + print(f"Display Umidade: {umidade}%") + + +class DisplayCompleto(Observer): + def update(self, temperatura, umidade, pressao): + print(f"Display Completo: {temperatura}°C, {umidade}%, {pressao} hPa") + + + diff --git a/respExercicio20.py b/respExercicio20.py new file mode 100644 index 0000000..13e39b6 --- /dev/null +++ b/respExercicio20.py @@ -0,0 +1,31 @@ + +class EstrategiaFrete: + def calcular_frete(self, peso, distancia): + pass + +class FreteNormal(EstrategiaFrete): + def calcular_frete(self, peso, distancia): + return 5.0 + (peso * 2.0) + (distancia * 0.1) + + +class FreteExpresso(EstrategiaFrete): + def calcular_frete(self, peso, distancia): + return 15.0 + (peso * 3.0) + (distancia * 0.2) + + +class FreteEconomico(EstrategiaFrete): + def calcular_frete(self, peso, distancia): + return 2.0 + (peso * 1.0) + (distancia * 0.05) + +class CalculadoraFrete: + def __init__(self, estrategia): + self.estrategia = estrategia + + def definir_estrategia(self, nova_estrategia): + self.estrategia = nova_estrategia + + def calcular(self, peso, distancia): + return self.estrategia.calcular_frete(peso, distancia) + + +