Información de la cuenta
Parte de la sección Object Oriented Programming del Journey de Lua de Coddy — lección 23 de 70.
Desafío
Fácil¡Tu Banco Digital se está volviendo más profesional! Ahora vamos a hacer que tus cuentas se muestren de forma agradable al imprimirlas. Al añadir un metamétodo __tostring, puedes controlar exactamente cómo aparece una cuenta, mostrando tanto un ID de cuenta como el saldo actual en un formato limpio y legible.
Continuarás construyendo sobre tus archivos existentes:
Account.lua: Extiende tu clase Account con dos nuevas características:- Modifica el constructor
:new()para que acepte un parámetroidque identifique cada cuenta - Añade un metamétodo
__tostringque devuelva una cadena formateada con la información de la cuenta
- Modifica el constructor
main.lua: Crea cuentas con IDs y demuestra cómo se muestran al imprimirlas.
El método __tostring debe devolver una cadena en este formato exacto:
Account [ID]: Balance = BALANCEDonde ID es el ID de la cuenta y BALANCE es el saldo actual.
Recibirás cuatro entradas:
- ID de la primera cuenta
- Monto del depósito de la primera cuenta
- ID de la segunda cuenta
- Monto del depósito de la segunda cuenta
En tu archivo principal, crea dos cuentas con los IDs proporcionados, deposita los montos respectivos en cada una, y luego imprime cada cuenta directamente usando print(). El metamétodo __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 = 750Cada cuenta ahora tiene una identidad única y puede describirse a sí misma con claridad: ¡una experiencia bancaria mucho más profesional!
Pruébalo tú mismo
-- Requerir el módulo Account
local Account = require('Account')
-- Leer las cuatro entradas
local id1 = io.read()
local deposit1 = tonumber(io.read())
local id2 = io.read()
local deposit2 = tonumber(io.read())
-- Crear dos cuentas con IDs
local account1 = Account:new(id1)
local account2 = Account:new(id2)
-- Depositar las cantidades respectivas
account1:deposit(deposit1)
account2:deposit(deposit2)
-- Imprimir cada cuenta (usa __tostring)
print(account1)
print(account2)
Todas las lecciones de Object Oriented Programming
1El concepto de 'self'
Tablas con funciones'self' explícitoLa sintaxis de dos puntosPunto vs. dos puntosResumen - Punto en movimiento4Proyecto: Banco Digital
Configuración del proyectoMétodo de depósito2Patrón de prototipo de clase
El concepto de prototipoVinculación con __indexEl constructor :new()Inicialización de atributosInstancias independientesResumen - Fábrica de coches5Sobrecarga de operadores en POO
Sumar objetosRestar objetosConcatenar objetosComparar objetos (<, >)Resumen - Matemáticas de la billetera8Encapsulamiento
Convenciones de nomenclaturaClosures para privacidadAcceso mediante ClosuresTablas de solo lecturaLógica de validaciónResumen - Bóveda segura11Patrones de diseño (Lite)
Funciones FactoryTabla SingletonPatrón IteradorObserver (Listener)Resumen - Logger Factory3Estado y Comportamiento de los Objetos
Variables de InstanciaMétodos GetterMétodos SetterPropiedades CalculadasFormateo de StringsComprobaciones de IgualdadResumen - Calificación del Estudiante6Fundamentos de la herencia
Configuración de la herenciaHerencia de métodosExtender el constructorAñadir métodos hijosCompartido vs. ÚnicoResumen: Jerarquía de formas