Menu
Coddy logo textTech

Finaler OOP-Check

Teil des Abschnitts Object Oriented Programming der Lua-Journey von Coddy — Lektion 70 von 70.

challenge icon

Aufgabe

Einfach

Lassen Sie uns alles zusammenbringen, was Sie über OOP in Lua gelernt haben! Sie werden ein Fahrzeugsystem bauen, das Vererbung, Kapselung durch Namenskonventionen und Mixins für optionale Funktionen demonstriert.

Sie werden Ihren Code über fünf Dateien organisieren:

  • Vehicle.lua: Die Basisklasse für alle Fahrzeuge. Jedes Fahrzeug hat einen name und eine nach privater Konvention benannte _speed (initialisiert auf 0). Fügen Sie einen :getName() Getter, einen :getSpeed() Getter und einen :setSpeed(value) Setter hinzu, der negative Werte ablehnt (wenn negativ, geben Sie "Speed cannot be negative" aus und ändern Sie den Wert nicht). Fügen Sie eine :describe() Methode hinzu, die "{name} moving at {speed}" zurückgibt.
  • Refuelable.lua: Eine Mixin-Tabelle, die treibstoffbezogenes Verhalten enthält. Fügen Sie eine :refuel(amount) Methode hinzu, die zu self._fuel addiert, und eine :getFuel() Methode, die den aktuellen Treibstoffstand zurückgibt.
  • Car.lua: Erbt von Vehicle und verwendet das Refuelable-Mixin. Der Konstruktor akzeptiert einen name und initialisiert _fuel auf 0. Überschreiben Sie :describe(), um "{name} moving at {speed}, fuel: {fuel}" zurückzugeben. Wenden Sie das Refuelable-Mixin an, um Autos Treibstoff-Funktionen zu geben.
  • Bicycle.lua: Erbt nur von Vehicle – keine Treibstoff-Funktionalität erforderlich. Der Konstruktor akzeptiert nur einen name. Fahrräder verwenden die geerbte :describe() Methode ohne Modifikation.
  • main.lua: Bringen Sie alles zusammen! Erstellen Sie ein Auto und ein Fahrrad basierend auf den Eingaben, demonstrieren Sie deren unterschiedliche Fähigkeiten und zeigen Sie, wie sie gemeinsames Fahrzeugverhalten teilen, während sie unterschiedliche Merkmale aufweisen.

Sie erhalten vier Eingaben:

  1. Name des Autos
  2. Name des Fahrrads
  3. Geschwindigkeit, die für beide Fahrzeuge eingestellt werden soll (eine Zahl)
  4. Treibstoffmenge, die dem Auto hinzugefügt werden soll (eine Zahl)

In Ihrer Hauptdatei:

  1. Erstellen Sie ein Auto und ein Fahrrad mit den angegebenen Namen
  2. Stellen Sie die Geschwindigkeit für beide Fahrzeuge mit der dritten Eingabe ein
  3. Tanken Sie das Auto mit der vierten Eingabe auf
  4. Geben Sie die Beschreibung des Autos aus
  5. Geben Sie die Beschreibung des Fahrrads aus

Wenn die Eingaben beispielsweise "Sedan", "Mountain Bike", "60" und "45" sind, sollte die Ausgabe wie folgt aussehen:

Sedan moving at 60, fuel: 45
Mountain Bike moving at 60

Wenn die Eingaben "Sports Car", "Road Bike", "120" und "80" sind, sollte die Ausgabe wie folgt aussehen:

Sports Car moving at 120, fuel: 80
Road Bike moving at 120

Diese Herausforderung zeigt, wie Vererbung gemeinsames Verhalten ermöglicht (beide Fahrzeuge können sich bewegen), Mixins optionale Fähigkeiten hinzufügen (nur Autos benötigen Treibstoff) und Kapselung die Datenintegrität schützt (Geschwindigkeitsvalidierung). Jede Technik dient einem anderen Zweck in Ihrem Design!

Probier es selbst

-- main.lua: Alles zusammenführen

local Car = require('Car')
local Bicycle = require('Bicycle')

-- Eingaben lesen
local carName = io.read()
local bicycleName = io.read()
local speed = tonumber(io.read())
local fuelAmount = tonumber(io.read())

-- TODO: Erstelle ein Auto mit dem angegebenen Namen

-- TODO: Erstelle ein Fahrrad mit dem angegebenen Namen

-- TODO: Setze die Geschwindigkeit für beide Fahrzeuge

-- TODO: Betanke das Auto mit der Kraftstoffmenge

-- TODO: Gib die Beschreibung des Autos aus

-- TODO: Gib die Beschreibung des Fahrrads aus

Alle Lektionen in Object Oriented Programming