Files
cursopython2023/aula158/banco.py
2022-12-02 09:24:38 -03:00

72 lines
2.1 KiB
Python

import contas
import pessoas
class Banco:
def __init__(
self,
agencias: list[int] | None = None,
clientes: list[pessoas.Pessoa] | None = None,
contas: list[contas.Conta] | None = None,
):
self.agencias = agencias or []
self.clientes = clientes or []
self.contas = contas or []
def _checa_agencia(self, conta):
if conta.agencia in self.agencias:
print('_checa_agencia', True)
return True
print('_checa_agencia', False)
return False
def _checa_cliente(self, cliente):
if cliente in self.clientes:
print('_checa_cliente', True)
return True
print('_checa_cliente', False)
return False
def _checa_conta(self, conta):
if conta in self.contas:
print('_checa_conta', True)
return True
print('_checa_conta', False)
return False
def _checa_se_conta_e_do_cliente(self, cliente, conta):
if conta is cliente.conta:
print('_checa_se_conta_e_do_cliente', True)
return True
print('_checa_se_conta_e_do_cliente', False)
return False
def autenticar(self, cliente: pessoas.Pessoa, conta: contas.Conta):
return self._checa_agencia(conta) and \
self._checa_cliente(cliente) and \
self._checa_conta(conta) and \
self._checa_se_conta_e_do_cliente(cliente, conta)
def __repr__(self):
class_name = type(self).__name__
attrs = f'({self.agencias!r}, {self.clientes!r}, {self.contas!r})'
return f'{class_name}{attrs}'
if __name__ == '__main__':
c1 = pessoas.Cliente('Luiz', 30)
cc1 = contas.ContaCorrente(111, 222, 0, 0)
c1.conta = cc1
c2 = pessoas.Cliente('Maria', 18)
cp1 = contas.ContaPoupanca(112, 223, 100)
c2.conta = cp1
banco = Banco()
banco.clientes.extend([c1, c2])
banco.contas.extend([cc1, cp1])
banco.agencias.extend([111, 222])
if banco.autenticar(c1, cc1):
cc1.depositar(10)
c1.conta.depositar(100)
print(c1.conta)