Configuración del proyecto
Parte de la sección Object Oriented Programming del Journey de Lua de Coddy — lección 55 de 70.
Desafío
Fácil¡Vamos a construir la base para un sistema de Gestión de Formas! Este proyecto crecerá a lo largo de las próximas lecciones, así que comenzaremos estableciendo una estructura de archivos limpia con una clase base Shape.
Crearás dos archivos para organizar tu código:
Shape.lua: Define una clase baseShapeutilizando el patrón de prototipo. Cada forma tiene un atributoname(como "Circle" o "Rectangle"). Incluye un constructor:new(name)que acepte el nombre de la forma, y un método:getName()que lo devuelva.main.lua: Da vida a tu clase Shape importando el módulo y creando una instancia de la forma. Lee un nombre de forma desde la entrada, crea una Shape con ese nombre y imprime el resultado de llamar a:getName().
Esta clase base servirá como padre para formas específicas como Rectangle y Circle en las próximas lecciones. Por ahora, concéntrate en configurar correctamente la estructura de la clase: la configuración de __index, el patrón del constructor y el método getter.
Entrada: Una sola línea que contiene el nombre de la forma (una cadena de texto).
Salida: El nombre de la forma devuelto por :getName().
Pruébalo tú mismo
-- Requerir el módulo Shape
local Shape = require('Shape')
-- Leer el nombre de la forma desde la entrada
local shapeName = io.read()
-- TODO: Crear una nueva instancia de Shape con el nombre dado
-- TODO: Imprimir el resultado de llamar a :getName() en tu forma
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ósito7Polimorfismo y Sobrescritura
Sobrescritura de métodosLlamar a métodos del padreDuck TypingInterfaz comúnComprobación de tiposRepaso - Roles de empleados10Proyecto: Gestor de formas
Configuración del proyectoClase Rectángulo2Patró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