11.9 Exercícios - Classes Abstratas
- Torne a classe Conta abstrata.
import abcclass Conta(abc.ABC):def __init__(self, numero, titular, saldo=0, limite=1000.0): self._numero = numero
self._titular = titular self._saldo = saldo self._limite = limite
# outros métodos e propriedades
2. Torne o método atualiza() abstrato:
class Conta(abc.ABC): # código omitido@abc.abstractmethod def atualiza():
pass
- Tente instânciar uma Conta :
if name == ' main ': c = Conta()O que ocorre?
- Agora, instancie uma ContaCorrente e uma ContaPoupanca , e teste o código chamando o método atualiza() .
if name == ' main ':cc = ContaCorrente(‘123-4’, ‘João’, 1000.0) cp = ContaPoupanca(‘123-5’, ‘José’, 1000.0)
cc.atualiza(0.01) cp.atualiza(0.01)
print(cc.saldo) print(cp.saldo)- Crie uma classe chamada ContaInvestimento :
class ContaInvestimeto(Conta): pass- Instancie uma ContaInvestimeto :
ci = ContaInvestimento(‘123-6’, ‘Maria’, 1000.0)
- Não conseguimos instanciar uma ContaInvestimento que herda Conta sem implementar o método abstrato atualiza() . Vamos criar uma implementação dentro da classe ContaInvestimento :
def atualiza(self, taxa):self._saldo += self._saldo * taxa *
- Agora teste instanciando uma ContaInvestimento e chame o método atualiza() :
ci = ContaInvestimento(‘123-6’, ‘Maria’, 1000) ci.deposita(1000.0)
ci.atualiza(0.01) print(ci.saldo)
- (opcional) Crie um atributo tipo nas classes ContaCorrente , ContaPoupanca e ContaInvestimento . Faça com que o tipo também seja impresso quando usamos a função print() .
CAPÍTULO 12