Menu
Coddy logo textTech

Teste Final do Banco

Parte da seção Object Oriented Programming do Journey de Lua da Coddy — lição 25 de 70.

challenge icon

Desafio

Fácil

Parabéns por construir um sistema de Banco Digital completo! Sua classe Account agora lida com depósitos, saques, verificações de saldo, identificação de conta e transferências entre contas. Vamos colocar tudo à prova com um cenário bancário realista de múltiplas contas.

Neste desafio final, você simulará um pequeno banco com três clientes realizando várias transações. Isso verificará se todos os seus métodos funcionam corretamente juntos e se as contas realmente mantêm estados independentes.

Seus dois arquivos:

  • Account.lua: Sua classe Account completa com toda a funcionalidade que você construiu ao longo deste projeto (construtor com ID, deposit, withdraw, getBalance, __tostring e transfer).
  • main.lua: Um script de simulação que cria múltiplas contas e executa uma série de transações entre elas.

Você receberá seis entradas:

  1. ID da Conta 1
  2. ID da Conta 2
  3. ID da Conta 3
  4. Depósito inicial para a Conta 1
  5. Depósito inicial para a Conta 2
  6. Depósito inicial para a Conta 3

No seu arquivo principal, simule o seguinte dia bancário:

  1. Crie três contas com os IDs fornecidos
  2. Deposite os valores iniciais em cada conta respectiva
  3. A Conta 1 transfere 100 para a Conta 2
  4. A Conta 2 transfere 150 para a Conta 3
  5. A Conta 3 transfere 50 para a Conta 1
  6. A Conta 1 tenta transferir 1000 para a Conta 3 (isso deve falhar)
  7. Imprima todas as três contas em ordem (Conta 1, depois 2, depois 3)

Por exemplo, se as entradas forem A001, A002, A003, 500, 300 e 200, a saída deve ser:

Insufficient funds
Account [A001]: Balance = 450
Account [A002]: Balance = 250
Account [A003]: Balance = 300

Vamos rastrear: A Conta 1 começa com 500, transfere 100 para a Conta 2 (agora 400), depois recebe 50 da Conta 3 (agora 450). A Conta 2 começa com 300, recebe 100 (agora 400), transfere 150 para a Conta 3 (agora 250). A Conta 3 começa com 200, recebe 150 (agora 350), transfere 50 para a Conta 1 (agora 300). A transferência final de 1000 falha porque a Conta 1 tem apenas 450.

Experimente você mesmo

-- Requer o módulo Account
local Account = require('Account')

-- Lê as seis entradas
local id1 = io.read()
local id2 = io.read()
local id3 = io.read()
local initialDeposit1 = tonumber(io.read())
local initialDeposit2 = tonumber(io.read())
local initialDeposit3 = tonumber(io.read())

-- Cria três contas com IDs
-- TODO: criar account1, account2, account3 usando Account:new()

-- Deposita os valores iniciais em cada conta respectiva
-- TODO: depositar initialDeposit1 na account1, initialDeposit2 na account2, initialDeposit3 na account3

-- Account 1 transfere 100 para Account 2
-- TODO: account1:transfer(account2, 100)

-- Account 2 transfere 150 para Account 3
-- TODO: account2:transfer(account3, 150)

-- Account 3 transfere 50 para Account 1
-- TODO: account3:transfer(account1, 50)

-- Account 1 tenta transferir 1000 para Account 3 (isso deve falhar)
-- TODO: account1:transfer(account3, 1000)

-- Imprime todas as três contas em ordem
-- TODO: imprimir account1, account2, account3

Todas as lições de Object Oriented Programming