Riepilogo - Fabbrica di auto
Fa parte della sezione Programmazione orientata agli oggetti del percorso Lua di Coddy. Lezione 11 di 70.
Sfida
FacileCostruiamo una classe Car completa che riunisca tutto ciò che hai imparato in questo capitolo! Creerai un sistema di fabbrica di automobili in cui ogni automobile ha il proprio modello e colore, dimostrando la corretta organizzazione dei moduli e l’indipendenza delle istanze.
Organizzerai il codice in due file:
Car.lua: definisci la classeCarseguendo il modello standard basato sui prototipi. La classe deve avere un costruttore:new(model, color)che crea automobili con attributi propri. Includi un metodo:describe()che permette a ogni automobile di presentarsi.main.lua: importa il modulo Car e crea più istanze di automobili per dimostrare che ciascuna mantiene il proprio stato indipendente.
Il metodo :describe() deve stampare in questo formato esatto:
A [color] [model]Riceverai quattro input:
- Modello della prima automobile
- Colore della prima automobile
- Modello della seconda automobile
- Colore della seconda automobile
Nel file principale, crea due automobili usando gli input forniti e fai in modo che ciascuna si presenti su una riga separata.
Per esempio, se gli input sono Sedan, blue, Truck e red, l’output dovrebbe essere:
A blue Sedan
A red TruckOgni automobile dovrebbe memorizzare il proprio modello e colore, dimostrando che la classe crea istanze davvero indipendenti.
Provalo tu
-- Importa il modulo Car
local Car = require('Car')
-- Leggi gli input
local model1 = io.read()
local color1 = io.read()
local model2 = io.read()
local color2 = io.read()
-- TODO: Crea due istanze di auto usando Car:new()
-- TODO: Chiama :describe() su ciascuna auto per stamparne le descrizioni
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 deposito2Schema 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