Menu
Coddy logo textTech

Prueba bancaria final

Parte de la sección Programación Orientada a Objetos del Journey de Lua de Coddy. Lección 25 de 70.

challenge icon

Desafío

Fácil

¡Felicidades por construir un sistema completo de Banco Digital! Tu clase Account ahora gestiona depósitos, retiros, consultas de saldo, identificación de cuentas y transferencias entre cuentas. Pongámoslo todo a prueba con un escenario bancario realista con varias cuentas.

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

Tus dos archivos:

  • Account.lua: Tu clase Account completa con toda la funcionalidad que has creado a lo largo de este proyecto (constructor con ID, depósito, retiro, getBalance, __tostring y transfer).
  • main.lua: Un script de simulación que crea varias 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 ID proporcionados
  2. Deposita los importes iniciales en cada cuenta correspondiente
  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, después 2 y después 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

Veamos el proceso: la cuenta 1 comienza con 500, transfiere 100 a la cuenta 2 (ahora tiene 400) y después recibe 50 de la cuenta 3 (ahora tiene 450). La cuenta 2 comienza con 300, recibe 100 (ahora tiene 400) y transfiere 150 a la cuenta 3 (ahora tiene 250). La cuenta 3 comienza con 200, recibe 150 (ahora tiene 350) y transfiere 50 a la cuenta 1 (ahora tiene 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 Programación Orientada a Objetos

Practica por tu cuenta: Compilador de Lua online