Projekt-Setup
Teil des Abschnitts Objektorientierte Programmierung der Lua-Journey von Coddy. Lektion 55 von 70.
Aufgabe
EinfachLass uns das Fundament für ein Shape-Manager-System erstellen! Dieses Projekt wird in den nächsten Lektionen wachsen, daher beginnen wir mit einer übersichtlichen Dateistruktur und einer grundlegenden Shape-Klasse.
Du wirst zwei Dateien erstellen, um deinen Code zu organisieren:
Shape.lua: Definiere eine grundlegendeShape-Klasse mithilfe des Prototyp-Musters. Jede Form hat einname-Attribut (wie „Circle“ oder „Rectangle“). Füge einen:new(name)-Konstruktor hinzu, der den Namen der Form entgegennimmt, sowie eine:getName()-Methode, die ihn zurückgibt.main.lua: Erwecke deine Shape-Klasse zum Leben, indem du das Modul einbindest und eine Shape-Instanz erstellst. Lies einen Formnamen aus der Eingabe ein, erstelle eine Shape mit diesem Namen und gib das Ergebnis des Aufrufs von:getName()aus.
Diese Basisklasse wird in den kommenden Lektionen als übergeordnete Klasse für bestimmte Formen wie Rectangle und Circle dienen. Konzentriere dich zunächst darauf, die Klassenstruktur richtig umzusetzen: die __index-Einrichtung, das Konstruktormuster und die Getter-Methode.
Eingabe: Eine einzelne Zeile mit dem Namen der Form (eine Zeichenkette).
Ausgabe: Der von :getName() zurückgegebene Name der Form.
Probier es selbst
-- Das Shape-Modul einbinden
local Shape = require('Shape')
-- Den Shape-Namen von der Eingabe lesen
local shapeName = io.read()
-- TODO: Erstelle eine neue Shape-Instanz mit dem gegebenen Namen
-- TODO: Gib das Ergebnis des Aufrufs von :getName() auf deiner Shape aus
Alle Lektionen in Objektorientierte Programmierung
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-KlasseKreis-KlasseUmfang-MethodeFormen-SammlungGesamtflächeFormen filtern2Klassen-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Übe selbstständig: Online-Lua-Compiler