Projekt-Setup
Teil des Abschnitts Object Oriented Programming der Lua-Journey von Coddy — Lektion 19 von 70.
Aufgabe
EinfachLass 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 Basis-Klasse Shape.
Du wirst zwei Dateien erstellen, um deinen Code zu organisieren:
Shape.lua: Definiere eine Basis-KlasseShapeunter Verwendung des Prototyp-Musters. Jede Form hat einnameAttribut (wie "Circle" oder "Rectangle"). Implementiere einen:new(name)Konstruktor, der den Namen der Form entgegennimmt, und eine:getName()Methode, die diesen zurückgibt.main.lua: Erwecke deine Shape-Klasse zum Leben, indem du das Modul mit require 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 Basis-Klasse wird in den kommenden Lektionen als Elternklasse für spezifische Formen wie Rectangle und Circle dienen. Konzentriere dich vorerst darauf, die Klassenstruktur korrekt aufzubauen – 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
-- Binde das Shape-Modul ein
local Shape = require('Shape')
-- Lies den Namen der Form aus der Eingabe
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