Configurazione del progetto
Fa parte della sezione Programmazione orientata agli oggetti del percorso Lua di Coddy. Lezione 55 di 70.
Sfida
FacileCostruiamo le basi per un sistema di gestione delle forme! Questo progetto crescerà nel corso delle prossime lezioni, quindi inizieremo creando una struttura di file ordinata con una classe base Shape.
Creerai due file per organizzare il codice:
Shape.lua: Definisci una classe baseShapeusando il pattern prototipo. Ogni forma ha un attributoname(come "Circle" o "Rectangle"). Includi un costruttore:new(name)che accetta il nome della forma e un metodo:getName()che lo restituisce.main.lua: Dai vita alla tua classe Shape richiedendo il modulo e creando un'istanza della forma. Leggi il nome di una forma dall'input, crea una Shape con quel nome e stampa il risultato della chiamata a:getName().
Questa classe base fungerà da classe genitore per forme specifiche come Rectangle e Circle nelle prossime lezioni. Per ora, concentrati sulla struttura corretta della classe: la configurazione di __index, il pattern del costruttore e il metodo getter.
Input: Una singola riga contenente il nome della forma (una stringa).
Output: Il nome della forma restituito da :getName().
Provalo tu
-- Importa il modulo Shape
local Shape = require('Shape')
-- Leggi il nome della forma dall'input
local shapeName = io.read()
-- TODO: Crea una nuova istanza di Shape con il nome specificato
-- TODO: Stampa il risultato della chiamata a :getName() sulla tua forma
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