Menu
Coddy logo textTech

Clase Rectángulo

Parte de la sección Object Oriented Programming del Journey de Lua de Coddy — lección 56 de 70.

challenge icon

Desafío

Fácil

Ahora 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 aceptar width y height, 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