Menu
Coddy logo textTech

Clase Círculo

Parte de la sección Programación Orientada a Objetos del Journey de Lua de Coddy. Lección 57 de 70.

challenge icon

Desafío

Fácil

Sigamos construyendo nuestro Shape Manager 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 principal 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 tus módulos Rectangle y 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.

Ahora ambas formas comparten la misma interfaz mediante 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 y área del círculo.

Pruébalo tú mismo

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

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

-- Lee el ancho y la altura desde la entrada
local width = tonumber(io.read())
local height = tonumber(io.read())

-- TODO: Lee el radio desde la entrada

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

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

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

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

Todas las lecciones de Programación Orientada a Objetos

Practica por tu cuenta: Compilador de Lua online