Clase Rectángulo
Parte de la sección Object Oriented Programming del Journey de Lua de Coddy — lección 56 de 70.
Desafío
FácilAhora vamos a expandir nuestro Gestor de Formas creando una clase Rectangle que herede de la clase base Shape que construiste en la lección anterior.
Trabajarás con tres archivos para mantener tu código organizado:
Shape.lua: Tu clase base Shape del desafío anterior (con:new(name)y:getName()).Rectangle.lua: Crea una clase Rectangle que herede de Shape. El constructor debe aceptarwidthyheight, llamar al constructor padre con el nombre"Rectangle", y almacenar las dimensiones. Añade un método:getArea()que calcule y devuelva el área del rectángulo.main.lua: Requiere tu módulo Rectangle, lee el ancho y el alto de la entrada, crea una instancia de Rectangle e imprime su nombre seguido de su área en líneas separadas.
Recuerda configurar correctamente el enlace de herencia para que las instancias de Rectangle puedan acceder a los métodos de Shape a través de la cadena de prototipos.
Entrada: Dos líneas: la primera contiene el ancho (número), la segunda contiene el alto (número).
Salida: Dos líneas: el nombre del rectángulo obtenido de :getName(), luego su área obtenida de :getArea().
Pruébalo tú mismo
-- Requerir el módulo Rectangle
local Rectangle = require('Rectangle')
-- Leer el ancho y el alto de la entrada
local width = tonumber(io.read())
local height = tonumber(io.read())
-- Crear una nueva instancia de Rectangle con las dimensiones dadas
local rect = Rectangle:new(width, height)
-- Imprimir el nombre y el área del rectángulo
print(rect:getName())
print(rect:getArea())
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