Menu
Coddy logo textTech

Zusammenfassung – Roboter-Montage

Teil des Abschnitts Objektorientierte Programmierung der Lua-Journey von Coddy. Lektion 54 von 70.

challenge icon

Aufgabe

Einfach

Stellen 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 raised ausgibt, sowie eine :lower()-Methode, die {side} arm lowered ausgibt.
  • 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 forward ausgibt.
  • Head.lua: Erstelle eine Head-Klasse mit einem Konstruktor :new(). Füge eine :nod()-Methode hinzu, die Head nods ausgibt, sowie eine :shake()-Methode, die Head shakes ausgibt.
  • 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:

  1. Den Namen des Roboters (eine Zeichenkette)
  2. Eine Antwort: yes oder no

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 nods

Oder wenn die Antwort no lautet:

{name} says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head shakes

Wenn 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 nods

Beachte, 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

Übe selbstständig: Online-Lua-Compiler