Menu
Coddy logo textTech

Información de la cuenta

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

challenge icon

Desafío

Fácil

¡Tu banco digital se está volviendo más profesional! Ahora hagamos que tus cuentas se muestren correctamente al imprimirlas. Al añadir un método metamágico __tostring, puedes controlar exactamente cómo aparece una cuenta: mostrando tanto un ID de cuenta como el saldo actual en un formato limpio y fácil de leer.

Seguirás trabajando sobre tus archivos existentes:

  • Account.lua: Amplía tu clase Account con dos nuevas funcionalidades:
    • Modifica el constructor :new() para que acepte un parámetro id que identifique cada cuenta
    • Añade un método metamágico __tostring que devuelva una cadena formateada con la información de la cuenta
    Conserva toda la funcionalidad existente (los métodos deposit, withdraw y getBalance).
  • main.lua: Crea cuentas con ID y demuestra cómo se muestran al imprimirlas.

El método __tostring debe devolver una cadena con este formato exacto:

Account [ID]: Balance = BALANCE

Donde ID es el ID de la cuenta y BALANCE es el saldo actual.

Recibirás cuatro entradas:

  1. ID de la primera cuenta
  2. Importe del depósito de la primera cuenta
  3. ID de la segunda cuenta
  4. Importe del depósito de la segunda cuenta

En tu archivo principal, crea dos cuentas con los ID proporcionados, deposita los importes correspondientes en cada una y, después, imprime cada cuenta directamente usando print(). El método metamágico __tostring se llamará automáticamente cuando imprimas el objeto de la cuenta.

Por ejemplo, si las entradas son 1001, 500, 1002 y 750, la salida debería ser:

Account [1001]: Balance = 500
Account [1002]: Balance = 750

Ahora cada cuenta tiene una identidad única y puede describirse claramente: ¡una experiencia bancaria mucho más profesional!

Pruébalo tú mismo

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

-- Lee las cuatro entradas
local id1 = io.read()
local deposit1 = tonumber(io.read())
local id2 = io.read()
local deposit2 = tonumber(io.read())

-- Crea dos cuentas con IDs
local account1 = Account:new(id1)
local account2 = Account:new(id2)

-- Deposita las cantidades respectivas
account1:deposit(deposit1)
account2:deposit(deposit2)

-- Imprime cada cuenta (usa __tostring)
print(account1)
print(account2)

Todas las lecciones de Programación Orientada a Objetos

Practica por tu cuenta: Compilador de Lua online