Obtener saldo
Parte de la sección Programación Orientada a Objetos 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 comprobación adecuada de los fondos. Ahora añadamos un método getter para obtener el saldo y después juntemos todo en un escenario bancario realista.
Continuarás trabajando 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 antes: proporcionar acceso controlado a los datos internos en lugar de acceder directamente al campo. Conserva toda la funcionalidad existente (constructor y métodos de depósito y retiro).main.lua: Crea una cuenta y recorre una secuencia de operaciones bancarias para demostrar cómo funcionan juntos los depósitos, los retiros y las comprobaciones de saldo en una situación real.
Recibirás cinco entradas:
- Cantidad del depósito inicial
- Cantidad del primer retiro
- Cantidad del segundo depósito
- Cantidad del segundo retiro
- Cantidad del tercer retiro
En tu archivo principal, crea una cuenta y realiza estas operaciones en orden:
- Deposita la cantidad inicial y después imprime el saldo usando
:getBalance() - Retira la primera cantidad y después imprime el saldo
- Deposita la segunda cantidad y después imprime el saldo
- Retira la segunda cantidad y después imprime el saldo
- Intenta realizar el tercer retiro y después 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 con 200, baja a 150 después del primer retiro, sube a 250 después de otro depósito, baja a 70 después de retirar 180 y permanece en 70 cuando el retiro final de 100 falla debido a fondos insuficientes.
Pruébalo tú mismo
-- Requiere el módulo Account
local Account = require('Account')
-- Lee 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())
-- Crea una sola cuenta
local account = Account:new()
-- Deposita la cantidad inicial e imprime el saldo usando :getBalance()
account:deposit(initialDeposit)
print(account:getBalance())
-- Intenta el primer retiro e imprime el saldo
account:withdraw(withdrawal1)
print(account:getBalance())
-- Deposita la segunda cantidad e imprime el saldo
account:deposit(deposit2)
print(account:getBalance())
-- Intenta el segundo retiro e imprime el saldo
account:withdraw(withdrawal2)
print(account:getBalance())
-- Intenta el tercer retiro e imprime el saldo
account:withdraw(withdrawal3)
print(account:getBalance())
Todas las lecciones de Programación Orientada a Objetos
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 formasPractica por tu cuenta: Compilador de Lua online