Menu
Coddy logo textTech

Prueba bancaria final

Parte de la sección Object Oriented Programming del Journey de Lua de Coddy — lección 25 de 70.

challenge icon

Desafío

Fácil

¡Felicitaciones por construir un sistema de Banco Digital completo! Tu clase Account ahora maneja depósitos, retiros, verificaciones de saldo, identificación de cuentas y transferencias entre cuentas. Vamos a ponerlo todo a prueba con un escenario bancario realista de múltiples cuentas.

En este desafío final, simularás un pequeño banco con tres clientes realizando diversas transacciones. Esto verificará que todos tus métodos funcionen correctamente juntos y que las cuentas mantengan verdaderamente un estado independiente.

Tus dos archivos:

  • Account.lua: Tu clase Account completa con toda la funcionalidad que has construido a lo largo de este proyecto (constructor con ID, deposit, withdraw, getBalance, __tostring y transfer).
  • main.lua: Un script de simulación que crea múltiples cuentas y ejecuta una serie de transacciones entre ellas.

Recibirás seis entradas:

  1. ID de la Cuenta 1
  2. ID de la Cuenta 2
  3. ID de la Cuenta 3
  4. Depósito inicial para la Cuenta 1
  5. Depósito inicial para la Cuenta 2
  6. Depósito inicial para la Cuenta 3

En tu archivo principal, simula el siguiente día bancario:

  1. Crea tres cuentas con los IDs proporcionados
  2. Deposita los montos iniciales en cada cuenta respectiva
  3. La Cuenta 1 transfiere 100 a la Cuenta 2
  4. La Cuenta 2 transfiere 150 a la Cuenta 3
  5. La Cuenta 3 transfiere 50 a la Cuenta 1
  6. La Cuenta 1 intenta transferir 1000 a la Cuenta 3 (esto debería fallar)
  7. Imprime las tres cuentas en orden (Cuenta 1, luego 2, luego 3)

Por ejemplo, si las entradas son A001, A002, A003, 500, 300 y 200, la salida debería ser:

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

Hagamos un seguimiento: la Cuenta 1 comienza con 500, transfiere 100 a la Cuenta 2 (ahora 400), luego recibe 50 de la Cuenta 3 (ahora 450). La Cuenta 2 comienza con 300, recibe 100 (ahora 400), transfiere 150 a la Cuenta 3 (ahora 250). La Cuenta 3 comienza con 200, recibe 150 (ahora 350), transfiere 50 a la Cuenta 1 (ahora 300). La transferencia final de 1000 falla porque la Cuenta 1 solo tiene 450.

Pruébalo tú mismo

-- Requerir el módulo Account
local Account = require('Account')

-- Leer las 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())

-- Crear tres cuentas con IDs
-- TODO: crear account1, account2, account3 usando Account:new()

-- Depositar los montos iniciales en cada cuenta respectiva
-- TODO: depositar initialDeposit1 en account1, initialDeposit2 en account2, initialDeposit3 en account3

-- La Cuenta 1 transfiere 100 a la Cuenta 2
-- TODO: account1:transfer(account2, 100)

-- La Cuenta 2 transfiere 150 a la Cuenta 3
-- TODO: account2:transfer(account3, 150)

-- La Cuenta 3 transfiere 50 a la Cuenta 1
-- TODO: account3:transfer(account1, 50)

-- La Cuenta 1 intenta transferir 1000 a la Cuenta 3 (esto debería fallar)
-- TODO: account1:transfer(account3, 1000)

-- Imprimir las tres cuentas en orden
-- TODO: imprimir account1, account2, account3

Todas las lecciones de Object Oriented Programming