Projekt-Setup
Teil des Abschnitts Object Oriented Programming der Lua-Journey von Coddy — Lektion 55 von 70.
Aufgabe
EinfachLassen Sie uns das Fundament für ein Shape Manager-System bauen! Dieses Projekt wird über die nächsten Lektionen hinweg wachsen, daher beginnen wir mit der Einrichtung einer sauberen Dateistruktur mit einer Basisklasse Shape.
Sie werden zwei Dateien erstellen, um Ihren Code zu organisieren:
Shape.lua: Definieren Sie eine BasisklasseShapeunter Verwendung des Prototyp-Musters. Jede Form hat einname-Attribut (wie "Circle" oder "Rectangle"). Fügen Sie einen:new(name)-Konstruktor hinzu, der den Namen der Form akzeptiert, und eine:getName()-Methode, die diesen zurückgibt.main.lua: Erwecken Sie Ihre Shape-Klasse zum Leben, indem Sie das Modul mit require einbinden und eine Shape-Instanz erstellen. Lesen Sie einen Shape-Namen aus der Eingabe ein, erstellen Sie ein Shape mit diesem Namen und geben Sie das Ergebnis des Aufrufs von:getName()aus.
Diese Basisklasse wird in den kommenden Lektionen als Elternklasse für spezifische Formen wie Rectangle und Circle dienen. Konzentrieren Sie sich vorerst darauf, die Klassenstruktur richtig hinzubekommen – das __index-Setup, das Konstruktor-Muster und die Getter-Methode.
Eingabe: Eine einzelne Zeile, die den Namen der Form enthält (ein String).
Ausgabe: Der Name der Form, der von :getName() zurückgegeben wird.
Probier es selbst
-- Shape-Modul einbinden
local Shape = require('Shape')
-- Den Namen der Form von der Eingabe lesen
local shapeName = io.read()
-- TODO: Erstelle eine neue Shape-Instanz mit dem angegebenen Namen
-- TODO: Gib das Ergebnis des Aufrufs von :getName() für deine Form aus
Alle Lektionen in Object Oriented Programming
1Das 'self'-Konzept
Tabellen mit FunktionenExplizites 'self'Die Doppelpunkt-SyntaxPunkt vs. DoppelpunktZusammenfassung – Beweglicher Punkt4Projekt: Digitale Bank
Projekt-SetupEinzahlungsmethode7Polymorphie & Überschreiben
Methoden überschreibenElternmethoden aufrufenDuck TypingGemeinsames InterfaceTyp prüfenRückblick - Mitarbeiterrollen10Projekt: Formen-Manager
Projekt-SetupRechteck-Klasse2Klassen-Prototyp-Muster
Das Prototyp-KonzeptVerknüpfung mit __indexDer :new()-KonstruktorAttribute initialisierenUnabhängige InstanzenZusammenfassung – Autofabrik5Operatorüberladung in OOP
Objekte addierenObjekte subtrahierenObjekte verkettenObjekte vergleichen (<, >)Rückblick – Wallet-Mathematik3Objektzustand und -verhalten
InstanzvariablenGetter-MethodenSetter-MethodenBerechnete EigenschaftenStrings formatierenGleichheitsprüfungenZusammenfassung – Studentennote6Grundlagen der Vererbung
Das Vererbungs-SetupMethoden vererbenDen Konstruktor erweiternChild-Methoden hinzufügenGemeinsam vs. EinzigartigZusammenfassung - Formen-Hierarchie9Komposition & Mixins
Has-A-BeziehungDelegationEinfache MixinsAnwendung mehrerer MixinsMixins vs. VererbungZusammenfassung – Roboter-Montage12Abschluss-Herausforderungen
Wiederholung - InventarsystemWiederholung - BenutzerverwaltungWiederholung - Score-TrackerFinaler OOP-Check