Classe Rettangolo
Fa parte della sezione Programmazione orientata agli oggetti del percorso Lua di Coddy. Lezione 56 di 70.
Sfida
FacileOra espandiamo il nostro Shape Manager creando una classe Rectangle che eredita dalla classe base Shape che hai realizzato nella lezione precedente.
Lavorerai con tre file per mantenere il codice organizzato:
Shape.lua: la tua classe base Shape della sfida precedente (con:new(name)e:getName()).Rectangle.lua: crea una classe Rectangle che eredita da Shape. Il costruttore deve accettarewidtheheight, chiamare il costruttore della classe genitore con il nome"Rectangle"e memorizzare le dimensioni. Aggiungi un metodo:getArea()che calcola e restituisce l'area del rettangolo.main.lua: richiedi il modulo Rectangle, leggi width e height dall'input, crea un'istanza Rectangle e stampa il suo nome seguito dalla sua area su righe separate.
Ricorda di impostare correttamente il collegamento di ereditarietà, in modo che le istanze Rectangle possano accedere ai metodi di Shape attraverso la catena dei prototipi.
Input: due righe: la prima contiene la larghezza (numero), la seconda l'altezza (numero).
Output: due righe: il nome del rettangolo restituito da :getName(), poi la sua area restituita da :getArea().
Provalo tu
-- Carica il modulo Rectangle con require
local Rectangle = require('Rectangle')
-- Leggi width e height dall'input
local width = tonumber(io.read())
local height = tonumber(io.read())
-- Crea una nuova istanza di Rectangle con le dimensioni specificate
local rect = Rectangle:new(width, height)
-- Stampa il nome e l'area del rettangolo
print(rect:getName())
print(rect:getArea())
Tutte le lezioni di Programmazione orientata agli oggetti
1Il concetto di «self»
Tabelle con funzioni«self» esplicitoLa sintassi dei due puntiPunto o due puntiRiepilogo - Spostare il punto4Progetto: Banca digitale
Configurazione del progettoMetodo di deposito7Polimorfismo e sovrascrittura
Sovrascrivere i metodiChiamare i metodi della classe genitoreDuck TypingInterfaccia comuneVerificare il tipoRiepilogo - Ruoli dei dipendenti10Progetto: Gestore di forme
Configurazione del progettoClasse RettangoloClasse CerchioMetodo del perimetroRaccolta di formeArea totaleFiltrare le forme2Schema del prototipo di classe
Il concetto di prototipoCollegare con __indexIl costruttore :new()Inizializzare gli attributiIstanze indipendentiRiepilogo - Fabbrica di auto5Sovraccarico degli operatori nella OOP
Sommare oggettiSottrarre oggettiConcatenare oggettiConfrontare oggetti (<, >)Ripasso - Calcoli con il portafoglio8Incapsulamento
Convenzioni di denominazioneClosure per la privacyAccesso tramite closureTabelle di sola letturaLogica di convalidaRiepilogo - Cassaforte sicura11Modelli di progettazione (base)
Funzioni factoryTabella singletonPattern IteratorObserver (listener)Riepilogo - Factory per logger3Stato e comportamento degli oggetti
Variabili di istanzaMetodi getterMetodi setterProprietà calcolateFormattazione delle stringheControlli di uguaglianzaRiepilogo - Voto dello studente6Fondamenti dell'ereditarietà
Configurare l'ereditarietàEreditare i metodiEstendere il costruttoreAggiungere metodi alla classe figliaCondiviso vs specificoRiepilogo - Gerarchia delle formeEsercitati da solo: Compilatore Lua online