Menu
Coddy logo textTech

Clase Círculo

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

challenge icon

Desafío

Fácil

Continuemos construyendo nuestro Gestor de Formas agregando una clase Circle junto al Rectangle que creaste en la lección anterior.

Trabajarás con cuatro archivos para mantener tus formas organizadas:

  • Shape.lua: Tu clase base Shape con :new(name) y :getName().
  • Rectangle.lua: Tu clase Rectangle del desafío anterior con :getArea().
  • Circle.lua: Crea una clase Circle que herede de Shape. El constructor debe aceptar un radius, llamar al constructor padre con el nombre "Circle" y almacenar el radio. Agrega un método :getArea() que calcule el área del círculo usando la fórmula πr². Usa math.pi para el valor de π.
  • main.lua: Requiere tanto tus módulos Rectangle como Circle. Lee tres valores de la entrada: el ancho de un rectángulo, la altura de un rectángulo y el radio de un círculo. Crea una instancia de cada forma e imprime cuatro líneas: el nombre del rectángulo, el área del rectángulo, el nombre del círculo y el área del círculo.

Ambas formas ahora comparten la misma interfaz a través de la herencia: cada una tiene un método :getName() de Shape y su propia implementación de :getArea(). Esta interfaz común será útil en las próximas lecciones.

Entrada: Tres líneas: ancho (número), altura (número) y radio (número).

Salida: Cuatro líneas: nombre del rectángulo, área del rectángulo, nombre del círculo, área del círculo.

Pruébalo tú mismo

-- Requerir el módulo Rectangle
local Rectangle = require('Rectangle')

-- Requerir el módulo Circle
-- TODO: Requerir el módulo Circle aquí

-- Leer el ancho y el alto de la entrada
local width = tonumber(io.read())
local height = tonumber(io.read())

-- TODO: Leer el radio de la entrada

-- Crear una nueva instancia de Rectangle con las dimensiones dadas
local rect = Rectangle:new(width, height)

-- TODO: Crear una nueva instancia de Circle con el radio dado

-- Imprimir el nombre y el área del rectángulo
print(rect:getName())
print(rect:getArea())

-- TODO: Imprimir el nombre y el área del círculo

Todas las lecciones de Object Oriented Programming