Zusammenfassung – Roboter-Montage
Teil des Abschnitts Object Oriented Programming der Lua-Journey von Coddy — Lektion 54 von 70.
Aufgabe
EinfachLassen Sie uns einen Robot aus einzelnen Komponententeilen zusammenbauen! Anstatt Vererbung zu verwenden, bauen Sie einen Roboter auf, indem Sie ihn aus separaten Arm-, Leg- und Head-Objekten zusammensetzen – jedes mit seinem eigenen spezialisierten Verhalten. Der Roboter wird diese Teile durch Delegation koordinieren.
Sie werden Ihren Code über fünf Dateien organisieren:
Arm.lua: Erstellen Sie eine Arm-Klasse mit einem Konstruktor:new(side), der speichert, auf welcher Seite er sich befindet (z. B. "left" oder "right"). Fügen Sie eine:raise()-Methode hinzu, die{side} arm raisedausgibt, und eine:lower()-Methode, die{side} arm loweredausgibt.Leg.lua: Erstellen Sie eine Leg-Klasse mit einem Konstruktor:new(side), der die Seite speichert. Fügen Sie eine:step()-Methode hinzu, die{side} leg steps forwardausgibt.Head.lua: Erstellen Sie eine Head-Klasse mit einem Konstruktor:new(). Fügen Sie eine:nod()-Methode hinzu, dieHead nodsausgibt, und eine:shake()-Methode, dieHead shakesausgibt.Robot.lua: Erstellen Sie eine Robot-Klasse, deren Konstruktor:new(name)den Namen speichert und alle Komponententeile intern erstellt: einen linken Arm, einen rechten Arm, ein linkes Bein, ein rechtes Bein und einen Kopf. Der Roboter sollte diese Methoden haben, die an seine Teile delegieren::greet()— gibt{name} says hello!aus, hebt dann den rechten Arm und senkt ihn wieder:walk()— lässt das linke Bein einen Schritt machen, dann das rechte Bein:respond(answer)— wenn die Antwort"yes"ist, nickt der Kopf; wenn"no", schüttelt der Kopf
main.lua: Lesen Sie Eingaben für den Namen des Roboters und eine Ja/Nein-Antwort ein. Erstellen Sie einen Robot, lassen Sie ihn grüßen, gehen und dann basierend auf der Eingabe antworten.
Sie erhalten zwei Eingaben:
- Der Name des Roboters (ein String)
- Eine Antwort:
yesoderno
Ihre Ausgabe sollte zeigen, wie der Roboter seine Teile koordiniert:
{name} says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head nodsOder wenn die Antwort no ist:
{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 sind, sollte die Ausgabe wie folgt aussehen:
Robo says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head nodsBeachten Sie, dass der Robot nicht weiß, wie Arme gehoben werden oder Beine Schritte machen – er sagt jedem Teil einfach, was es tun soll. Jede Komponente ist unabhängig und wiederverwendbar, und der Roboter fungiert als Koordinator, der alles zusammenführt!
Probier es selbst
-- main.lua: Einstiegspunkt für die Robot-Composition-Challenge
local Robot = require('Robot')
-- Eingaben lesen
local name = io.read()
local answer = io.read()
-- TODO: Erstelle einen Roboter mit dem angegebenen Namen
-- TODO: Lass den Roboter grüßen
-- TODO: Lass den Roboter laufen
-- TODO: Lass den Roboter basierend auf der Antwort-Eingabe antworten
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