Configuración del proyecto
Parte de la sección Programación Orientada a Objetos del Journey de Lua de Coddy. Lección 19 de 70.
Desafío
FácilEstamos comenzando el proyecto Digital Bank. En las próximas lecciones crearás una clase Account que pueda recibir depósitos, gestionar retiros, imprimirse a sí misma y transferir dinero a otras cuentas. Todo comienza con una estructura de archivos limpia y un constructor.
Tus dos archivos:
Account.lua: define la tablaAccount, estableceAccount.__index = Accountpara que las instancias encuentren sus métodos y escribe el constructor:new(). Este crea una tabla vacía, establece su metatabla enAccount, le asigna unbalancede0y la devuelve. El archivo termina conreturn Account.main.lua: requiere el módulo conrequire('Account'), crea dos cuentas conAccount:new(), imprime el saldo de cada una en su propia línea y después imprimesavings == checkingpara mostrar que las dos llamadas produjeron dos tablas diferentes.
Salida esperada:
0
0
falseCada cuenta comienza en cero. En la próxima lección añadirás el método :deposit(amount) que hace que el saldo aumente.
Pruébalo tú mismo
-- TODO: require el módulo Account (el archivo es Account.lua)
local Account = nil
-- TODO: crea dos cuentas con Account:new()
-- TODO: imprime el saldo de cada cuenta (uno por línea)
-- TODO: imprime si las dos cuentas son la misma tabla (no deberían serlo)
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