From 58d8daabaeaee2375d752843f9b96feadb194c03 Mon Sep 17 00:00:00 2001 From: Vitor Buxbaum Date: Sun, 21 Mar 2021 18:08:10 -0300 Subject: [PATCH 1/5] =?UTF-8?q?1.8=20-=20Adiciona=20implementa=C3=A7=C3=A3?= =?UTF-8?q?o=201.11?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1_introducao/8_heranca_polimorfismo.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/1_introducao/8_heranca_polimorfismo.py b/1_introducao/8_heranca_polimorfismo.py index 8b0c77c..e30a467 100644 --- a/1_introducao/8_heranca_polimorfismo.py +++ b/1_introducao/8_heranca_polimorfismo.py @@ -36,6 +36,15 @@ def __init__(self): def salario_mensal(self): return self._salario + self.__bonus + # implementação 1.11: + def salario_mensal(self, desconto): + return self._salario + self._bonus - desconto + + # implementação 1.11 alternativa: + # + # def salario_mensal(self, desconto=0): + # return self._salario + self.__bonus - desconto + def imprime(self): return "Gerente" From a0a733c3fc3c145be0d2eda45dabb38638a3fdc9 Mon Sep 17 00:00:00 2001 From: Vitor Buxbaum Date: Sun, 21 Mar 2021 18:09:49 -0300 Subject: [PATCH 2/5] =?UTF-8?q?1.11=20-=20indica=C3=A7=C3=A3o=20de=20imple?= =?UTF-8?q?menta=C3=A7=C3=A3o=20em=201.8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1_introducao/11_sobrecarga.py | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 1_introducao/11_sobrecarga.py diff --git a/1_introducao/11_sobrecarga.py b/1_introducao/11_sobrecarga.py new file mode 100644 index 0000000..9167ffb --- /dev/null +++ b/1_introducao/11_sobrecarga.py @@ -0,0 +1,3 @@ +""" +Implementado no arquivo 8_heranca_poliformismo.py +""" From ed7c848c26603b2f18865d276b7f77c752a6116b Mon Sep 17 00:00:00 2001 From: Vitor Buxbaum Date: Sun, 21 Mar 2021 18:17:34 -0300 Subject: [PATCH 3/5] =?UTF-8?q?1.12=20-=20implementa=C3=A7=C3=A3o=20com=20?= =?UTF-8?q?asserts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1_introducao/12_aplicacao_bancaria.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 1_introducao/12_aplicacao_bancaria.py diff --git a/1_introducao/12_aplicacao_bancaria.py b/1_introducao/12_aplicacao_bancaria.py new file mode 100644 index 0000000..e8e76d0 --- /dev/null +++ b/1_introducao/12_aplicacao_bancaria.py @@ -0,0 +1,20 @@ +class ContaBancaria: + def __init__(self, saldo_inicial): + self.saldo = saldo_inicial + + def depositar(self, valor): + self.saldo += valor + + def sacar(self, valor): + self.saldo -= valor + + def verifica_saldo(self): + return "Saldo = $" + str(self.saldo) + + +conta_teste = ContaBancaria(100) + +conta_teste.depositar(30) +conta_teste.sacar(20) + +assert conta_teste.verifica_saldo() == "Saldo = $110" From ad01fa4c7cfc2a068966a45532a03ab49a48e36b Mon Sep 17 00:00:00 2001 From: Vitor Buxbaum Date: Sun, 21 Mar 2021 18:25:23 -0300 Subject: [PATCH 4/5] =?UTF-8?q?1.12=20-=20Decis=C3=A3o=20de=20implementa?= =?UTF-8?q?=C3=A7=C3=A3o=20+=20assert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1_introducao/12_aplicacao_bancaria.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/1_introducao/12_aplicacao_bancaria.py b/1_introducao/12_aplicacao_bancaria.py index e8e76d0..9b05a52 100644 --- a/1_introducao/12_aplicacao_bancaria.py +++ b/1_introducao/12_aplicacao_bancaria.py @@ -1,3 +1,10 @@ +""" +Nesta implementação em Java, o método imprime() lança Strings na saída padrão. +Para facilitar a implementação de testes, o comportamento desse método foi +alterado para que apenas retorne as respectivas Strings. +""" + + class ContaBancaria: def __init__(self, saldo_inicial): self.saldo = saldo_inicial @@ -12,9 +19,11 @@ def verifica_saldo(self): return "Saldo = $" + str(self.saldo) -conta_teste = ContaBancaria(100) +conta_teste = ContaBancaria(200.00) + +assert conta_teste.verifica_saldo() == "Saldo = $200.0" -conta_teste.depositar(30) -conta_teste.sacar(20) +conta_teste.depositar(50.00) +conta_teste.sacar(70.00) -assert conta_teste.verifica_saldo() == "Saldo = $110" +assert conta_teste.verifica_saldo() == "Saldo = $180.0" From 360580df663b659be674822508c472b03d1bde4c Mon Sep 17 00:00:00 2001 From: Vitor Buxbaum Date: Sun, 21 Mar 2021 18:51:44 -0300 Subject: [PATCH 5/5] =?UTF-8?q?1.13=20-=20Implementa=C3=A7=C3=A3o,=20decis?= =?UTF-8?q?=C3=B5es=20e=20assert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1_introducao/13_static.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 1_introducao/13_static.py diff --git a/1_introducao/13_static.py b/1_introducao/13_static.py new file mode 100644 index 0000000..f2234bf --- /dev/null +++ b/1_introducao/13_static.py @@ -0,0 +1,26 @@ +""" +Nesta implementação em Java, o livro utiliza o artificio 'static' da linguagem. +Entretanto não há uma forma, em Python, para simular o comportamento de +atributos estáticos EXATAMENTE como ocorre em Java. + +Para simular o comportamento em Python, o atributo estático deve ser acessado +diretamente por sua classe, e não pela instância (como é feito no livro). +""" + + +class A: + + STATIC = int() + + def __init__(self): + self.media = int() + + +a = A() +A.STATIC, a.STATIC, a.media = 5, 5, 5 + +b = A() +A.STATIC, b.STATIC, b.media = 7, 7, 7 + + +assert (A.STATIC, a.STATIC, a.media, b.STATIC, b.media) == (7, 5, 5, 7, 7)