Menu
Coddy logo textTech

Classe Cerchio

Fa parte della sezione Programmazione orientata agli oggetti del percorso Lua di Coddy. Lezione 57 di 70.

challenge icon

Sfida

Facile

Continuiamo a costruire il nostro Shape Manager aggiungendo una classe Circle accanto a Rectangle, che hai creato nella lezione precedente.

Lavorerai con quattro file per tenere organizzate le tue forme:

  • Shape.lua: la tua classe base Shape con :new(name) e :getName().
  • Rectangle.lua: la tua classe Rectangle della sfida precedente con :getArea().
  • Circle.lua: crea una classe Circle che eredita da Shape. Il costruttore deve accettare un radius, chiamare il costruttore del genitore con il nome "Circle" e memorizzare il raggio. Aggiungi un metodo :getArea() che calcola l'area del cerchio usando la formula πr². Usa math.pi per il valore di π.
  • main.lua: richiedi sia il modulo Rectangle sia quello Circle. Leggi tre valori dall'input: la larghezza di un rettangolo, l'altezza di un rettangolo e il raggio di un cerchio. Crea un'istanza di ciascuna forma e stampa quattro righe: il nome del rettangolo, l'area del rettangolo, il nome del cerchio e l'area del cerchio.

Ora entrambe le forme condividono la stessa interfaccia tramite l'ereditarietà: ciascuna ha un metodo :getName() da Shape e una propria implementazione di :getArea(). Questa interfaccia comune sarà utile nelle prossime lezioni.

Input: tre righe: larghezza (numero), altezza (numero) e raggio (numero).

Output: quattro righe: nome del rettangolo, area del rettangolo, nome del cerchio, area del cerchio.

Provalo tu

-- Importa il modulo Rectangle
local Rectangle = require('Rectangle')

-- Importa il modulo Circle
-- TODO: importa qui il modulo Circle

-- Leggi width e height dall'input
local width = tonumber(io.read())
local height = tonumber(io.read())

-- TODO: leggi il raggio dall'input

-- Crea una nuova istanza di Rectangle con le dimensioni indicate
local rect = Rectangle:new(width, height)

-- TODO: crea una nuova istanza di Circle con il raggio indicato

-- Stampa il nome e l'area del rettangolo
print(rect:getName())
print(rect:getArea())

-- TODO: stampa il nome e l'area del cerchio

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Lua online