Obtener saldo
Parte de la sección Object Oriented Programming del Journey de Lua de Coddy — lección 22 de 70.
Desafío
Fácil¡Tu Banco Digital realmente está tomando forma! Las cuentas pueden recibir depósitos y gestionar retiros con una verificación de fondos adecuada. Ahora vamos a añadir un método getter para recuperar el saldo y luego pondremos todo junto en un escenario bancario realista.
Continuarás construyendo sobre tus archivos existentes:
Account.lua: Añade un método:getBalance()que devuelva el saldo actual. Esto sigue el patrón getter que aprendiste anteriormente: proporcionar acceso controlado a los datos internos en lugar de acceder al campo directamente. Mantén toda tu funcionalidad existente (constructor, métodos de depósito y retiro).main.lua: Crea una cuenta y ejecuta una secuencia de operaciones bancarias para demostrar cómo funcionan juntos los depósitos, retiros y verificaciones de saldo en un escenario real.
Recibirás cinco entradas:
- Monto del depósito inicial
- Monto del primer retiro
- Monto del segundo depósito
- Monto del segundo retiro
- Monto del tercer retiro
In su archivo principal, crea una cuenta y realiza estas operaciones en orden:
- Deposita el monto inicial, luego imprime el saldo usando
:getBalance() - Retira el primer monto, luego imprime el saldo
- Deposita el segundo monto, luego imprime el saldo
- Retira el segundo monto, luego imprime el saldo
- Intenta el tercer retiro, luego imprime el saldo
Recuerda que los retiros fallidos imprimirán Insufficient funds antes de que imprimas el saldo.
Por ejemplo, si las entradas son 200, 50, 100, 180, y 100, la salida debería ser:
200
150
250
70
Insufficient funds
70La cuenta comienza en 200, baja a 150 después del primer retiro, sube a 250 después de otro depósito, cae a 70 después de retirar 180, y se mantiene en 70 cuando el retiro final de 100 falla debido a fondos insuficientes.
Pruébalo tú mismo
-- Requerir el módulo Account
local Account = require('Account')
-- Leer las cinco entradas
local initialDeposit = tonumber(io.read())
local withdrawal1 = tonumber(io.read())
local deposit2 = tonumber(io.read())
local withdrawal2 = tonumber(io.read())
local withdrawal3 = tonumber(io.read())
-- Crear una sola cuenta
local account = Account:new()
-- Depositar el monto inicial y mostrar el saldo usando :getBalance()
account:deposit(initialDeposit)
print(account:getBalance())
-- Intentar el primer retiro y mostrar el saldo
account:withdraw(withdrawal1)
print(account:getBalance())
-- Depositar el segundo monto y mostrar el saldo
account:deposit(deposit2)
print(account:getBalance())
-- Intentar el segundo retiro y mostrar el saldo
account:withdraw(withdrawal2)
print(account:getBalance())
-- Intentar el tercer retiro y mostrar el saldo
account:withdraw(withdrawal3)
print(account:getBalance())
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