Zusammenfassung – Roboter-Montage
Teil des Abschnitts Objektorientierte Programmierung der Lua-Journey von Coddy. Lektion 54 von 70.
Aufgabe
EinfachStellen wir einen Robot aus einzelnen Komponenten zusammen! Anstatt Vererbung zu verwenden, baust du einen Roboter, indem du ihn aus separaten Arm-, Leg- und Head-Objekten zusammensetzt: jedes mit seinem eigenen spezialisierten Verhalten. Der Roboter koordiniert diese Teile durch Delegation.
Du organisierst deinen Code über fünf Dateien:
Arm.lua: Erstelle eine Arm-Klasse mit einem Konstruktor:new(side), der speichert, auf welcher Seite sie sich befindet (z. B. "left" oder "right"). Füge eine:raise()-Methode hinzu, die{side} arm raisedausgibt, sowie eine:lower()-Methode, die{side} arm loweredausgibt.Leg.lua: Erstelle eine Leg-Klasse mit einem Konstruktor:new(side), der die Seite speichert. Füge eine:step()-Methode hinzu, die{side} leg steps forwardausgibt.Head.lua: Erstelle eine Head-Klasse mit einem Konstruktor:new(). Füge eine:nod()-Methode hinzu, dieHead nodsausgibt, sowie eine:shake()-Methode, dieHead shakesausgibt.Robot.lua: Erstelle eine Robot-Klasse, deren Konstruktor:new(name)den Namen speichert und alle Komponenten intern erstellt: einen linken Arm, einen rechten Arm, ein linkes Bein, ein rechtes Bein und einen Kopf. Der Roboter soll über folgende Methoden verfügen, die Aufgaben an seine Komponenten delegieren::greet(): gibt{name} says hello!aus, hebt dann den rechten Arm und senkt ihn anschließend:walk(): lässt das linke Bein einen Schritt machen und anschließend das rechte Bein:respond(answer): wenn answer"yes"ist, nickt der Kopf; wenn"no", schüttelt der Kopf
main.lua: Lies Eingaben für den Namen des Roboters und eine Ja-/Nein-Antwort ein. Erstelle einen Robot, lasse ihn grüßen und gehen und anschließend basierend auf der Eingabe reagieren.
Du erhältst zwei Eingaben:
- Den Namen des Roboters (eine Zeichenkette)
- Eine Antwort:
yesoderno
Deine Ausgabe sollte zeigen, wie der Roboter seine Komponenten koordiniert:
{name} says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head nodsOder wenn die Antwort no lautet:
{name} says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head shakesWenn die Eingaben beispielsweise Robo und yes lauten, sollte die Ausgabe folgendermaßen aussehen:
Robo says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head nodsBeachte, dass der Robot nicht weiß, wie Arme gehoben werden oder Beine Schritte machen. Er weist einfach jedem Teil an, was es tun soll. Jede Komponente ist unabhängig und wiederverwendbar, und der Roboter fungiert als Koordinator, der sie alle zusammenführt!
Probier es selbst
-- main.lua: Einstiegspunkt für die Robot-Kompositions-Challenge
local Robot = require('Robot')
-- Eingaben lesen
local name = io.read()
local answer = io.read()
-- TODO: Erstelle einen Robot mit dem gegebenen Namen
-- TODO: Lass den Robot grüßen
-- TODO: Lass den Robot laufen
-- TODO: Lass den Robot basierend auf der answer-Eingabe antworten
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