We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
from abc import ABC, abstractclassmethod, abstractproperty from datetime import datetime
class Cliente: def init(self, endereco): self.endereco = endereco self.contas = []
def realizar_transacao(self, conta, transacao): transacao.registrar(conta) def adicionar_conta(self, conta): self.contas.append(conta)
class PessoaFisica(Cliente): def init(self, nome, data_nascimento, cpf, endereco): super().init(endereco) self.nome = nome self.data_nascimento = data_nascimento self.cpf = cpf
class Conta: def init(self, numero, cliente): self._saldo = 0 self._numero = numero self._agencia = "0001" self._cliente = cliente self._historico = Historico()
@classmethod def nova_conta(cls, cliente, numero): return cls(numero, cliente) @property def saldo(self): return self._saldo @property def numero(self): return self._numero @property def agencia(self): return self._agencia @property def cliente(self): return self._cliente @property def historico(self): return self._historico def sacar(self, valor): saldo = self.saldo excedeu_saldo = valor > saldo if excedeu_saldo: print("\n@@@ Operação falhou! Você não tem saldo suficiente. @@@") elif valor > 0: self._saldo -= valor print("\n=== Saque realizado com sucesso! ===") return True else: print("\n@@@ Operação falhou! O valor informado é inválido. @@@") return False def depositar(self, valor): if valor > 0: self._saldo += valor print("\n=== Depósito realizado com sucesso! ===") else: print("\n@@@ Operação falhou! O valor informado é inválido. @@@") return False return True
class ContaCorrente(Conta): def init(self, numero, cliente, limite=500, limite_saques=3): super().init(numero, cliente) self.limite = limite self.limite_saques = limite_saques
def sacar(self, valor): numero_saques = len( [transacao for transacao in self.historico.transacoes if transacao["tipo"] == Saque.__name__] ) excedeu_limite = valor > self.limite excedeu_saques = numero_saques >= self.limite_saques if excedeu_limite: print("\n@@@ Operação falhou! O valor do saque excede o limite. @@@") elif excedeu_saques: print("\n@@@ Operação falhou! Número máximo de saques excedido. @@@") else: return super().sacar(valor) return False def __str__(self): return f"""\ Agência:\t{self.agencia} C/C:\t\t{self.numero} Titular:\t{self.cliente.nome} """
class Historico: def init(self): self._transacoes = []
@property def transacoes(self): return self._transacoes def adicionar_transacao(self, transacao): self._transacoes.append( { "tipo": transacao.__class__.__name__, "valor": transacao.valor, "data": datetime.now().strftime("%d-%m-%Y %H:%M:%s"), } )
class Transacao(ABC): @Property @abstractproperty def valor(self): pass
@abstractclassmethod def registrar(self, conta): pass
class Saque(Transacao): def init(self, valor): self._valor = valor
@property def valor(self): return self._valor def registrar(self, conta): sucesso_transacao = conta.sacar(self.valor) if sucesso_transacao: conta.historico.adicionar_transacao(self)
class Deposito(Transacao): def init(self, valor): self._valor = valor
@property def valor(self): return self._valor def registrar(self, conta): sucesso_transacao = conta.depositar(self.valor) if sucesso_transacao: conta.historico.adicionar_transacao(self)
The text was updated successfully, but these errors were encountered:
No branches or pull requests
from abc import ABC, abstractclassmethod, abstractproperty
from datetime import datetime
class Cliente:
def init(self, endereco):
self.endereco = endereco
self.contas = []
class PessoaFisica(Cliente):
def init(self, nome, data_nascimento, cpf, endereco):
super().init(endereco)
self.nome = nome
self.data_nascimento = data_nascimento
self.cpf = cpf
class Conta:
def init(self, numero, cliente):
self._saldo = 0
self._numero = numero
self._agencia = "0001"
self._cliente = cliente
self._historico = Historico()
class ContaCorrente(Conta):
def init(self, numero, cliente, limite=500, limite_saques=3):
super().init(numero, cliente)
self.limite = limite
self.limite_saques = limite_saques
class Historico:
def init(self):
self._transacoes = []
class Transacao(ABC):
@Property
@abstractproperty
def valor(self):
pass
class Saque(Transacao):
def init(self, valor):
self._valor = valor
class Deposito(Transacao):
def init(self, valor):
self._valor = valor
The text was updated successfully, but these errors were encountered: