Contas Bancárias
Imagine que é um engenheiro de software num banco de topo. O banco está a trabalhar para melhorar o seu sistema backend, e a sua tarefa é projetar e implementar novas classes para representar diferentes tipos de contas bancárias.
O banco oferece dois tipos de contas: à ordem e poupança. Ambos os tipos de contas permitem aos clientes depositar e levantar dinheiro, mas cada um tem as suas próprias características. As contas à ordem têm um limite de descoberto, que permite aos clientes levantarem dinheiro além do seu saldo atual até ao limite de descoberto. As contas poupança rendem juros com base numa taxa anual percentual.
A sua tarefa é criar três classes Python:
BankAccount
, CheckingAccount
e SavingsAccount
. Todas são inicializadas com um montante inicial de balance
.- A classe
BankAccount
deve ter dois métodos:deposit
ewithdraw
. O métododeposit
deve aumentar o saldo pelo montante do depósito. O métodowithdraw
deve diminuir o saldo pelo montante do levantamento. Ambos devem imprimir o saldo final após a operação no formatoBalance: <X>
. Se não houver fundos suficientes, o programa deve imprimirInsufficient funds.
.
- A classe
CheckingAccount
deve herdar deBankAccount
e adicionar um atributo adicional:overdraft_limit
. O métodowithdraw
emCheckingAccount
deve ser sobrescrito para permitir que os clientes levantem dinheiro além do seu saldo atual até ao limite de descoberto. No caso de exceder o limite de descoberto, o programa deve imprimirWithdrawal exceeds overdraft limit.
.
- A classe
SavingsAccount
também deve herdar deBankAccount
. Deve adicionar um atributo de inicialização adicional:annual_percentage_yield
, e adicionar um métodocalculate_returns
que calcula os rendimentos ao poupar dinheiro com base naannual_percentage_yield
. O métodocalculate_returns
deve imprimir os rendimentos no formatoReturns: X
.
O saldo em qualquer conta nunca deve tornar-se negativo (exceto na
CheckingAccount
, onde pode ir até ao limite negativo de descoberto).Entrada | Saída |
check = CheckingAccount(500, 100); check.deposit(200); check.withdraw(800); saving = SavingsAccount(500, 0.05); saving.calculate_returns() | Balance: 700
Balance: -100
Returns: 25 |
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB