Menu
Coddy logo textTech

Metodo del perimetro

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

challenge icon

Sfida

Facile

Estendiamo il nostro Shape Manager aggiungendo un metodo :getPerimeter() sia alla classe Rectangle sia alla classe Circle. Proprio come con :getArea(), ogni forma calcola il proprio perimetro in modo diverso, ma entrambe condividono lo stesso nome del metodo: un esempio perfetto di polimorfismo in azione.

Continuerai a lavorare con i file esistenti:

  • Shape.lua: la classe Shape di base rimane invariata.
  • Rectangle.lua: aggiungi un metodo :getPerimeter() che restituisca il perimetro del rettangolo usando la formula 2 × (width + height).
  • Circle.lua: aggiungi un metodo :getPerimeter() che restituisca la circonferenza del cerchio usando la formula 2 × π × radius. Usa math.pi per π.
  • main.lua: richiedi entrambi i moduli delle forme, leggi le dimensioni dall'input, crea un Rectangle e un Circle, quindi stampa sei righe: il nome, l'area e il perimetro del rettangolo, seguiti dal nome, dall'area e dal perimetro del cerchio.

Ora entrambe le forme hanno un'interfaccia completa con :getName(), :getArea() e :getPerimeter(): tutto è accessibile tramite gli stessi nomi di metodo, nonostante le diverse implementazioni.

Input: tre righe: width (numero), height (numero) e radius (numero).

Output: sei righe in quest'ordine: nome del rettangolo, area del rettangolo, perimetro del rettangolo, nome del cerchio, area del cerchio, perimetro del cerchio.

Provalo tu

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

-- Carica il modulo Circle
local Circle = require('Circle')

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

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

-- Crea una nuova istanza di Circle con il raggio indicato
local circ = Circle:new(radius)

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

-- Stampa il nome, l'area e il perimetro del cerchio
print(circ:getName())
print(circ:getArea())
print(circ:getPerimeter())

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Lua online