Menu
Coddy logo textTech

Teste Final do Banco

Parte da seção Programação Orientada a Objetos do Journey de Lua da Coddy. Lição 25 de 70.

challenge icon

Desafio

Fácil

Parabéns por criar um sistema completo de Banco Digital! Sua classe Account agora lida com depósitos, saques, verificações de saldo, identificação de contas e transferências entre contas. Vamos testar tudo com um cenário bancário realista envolvendo várias 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 em conjunto e se as contas realmente mantêm estados independentes.

Seus dois arquivos:

  • Account.lua: Sua classe Account completa, com todas as funcionalidades que você desenvolveu ao longo deste projeto (construtor com ID, depósito, saque, getBalance, __tostring e transfer).
  • main.lua: Um script de simulação que cria várias 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 da conta 1
  5. Depósito inicial da conta 2
  6. Depósito inicial da conta 3

Em 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 correspondente
  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 as três contas em ordem (conta 1, depois 2 e depois 3)

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

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

Vamos acompanhar o processo: a conta 1 começa com 500, transfere 100 para a conta 2 (agora com 400) e depois recebe 50 da conta 3 (agora com 450). A conta 2 começa com 300, recebe 100 (agora com 400) e transfere 150 para a conta 3 (agora com 250). A conta 3 começa com 200, recebe 150 (agora com 350) e transfere 50 para a conta 1 (agora com 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 Programação Orientada a Objetos

Pratique por conta própria: Compilador de Lua online