Menu
Coddy logo textTech

Finaler OOP-Check

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

challenge icon

Aufgabe

Einfach

Führen wir alles zusammen, was du über OOP in Lua gelernt hast! Du erstellst ein Fahrzeugsystem, das Vererbung, Kapselung durch Namenskonventionen und Mixins für optionale Fähigkeiten demonstriert.

Du organisierst deinen Code über fünf Dateien:

  • Vehicle.lua: Die Basisklasse für alle Fahrzeuge. Jedes Fahrzeug hat einen name und einen privaten _speed gemäß der Namenskonvention (initialisiert auf 0). Füge einen Getter :getName(), einen Getter :getSpeed() und einen Setter :setSpeed(value) hinzu, der negative Werte ablehnt (bei einem negativen Wert soll Speed cannot be negative ausgegeben und der Wert nicht geändert werden). Füge eine :describe()-Methode hinzu, die "{name} moving at {speed}" zurückgibt.
  • Refuelable.lua: Eine Mixin-Tabelle mit tankbezogenem Verhalten. Füge eine :refuel(amount)-Methode hinzu, die self._fuel erhöht, sowie eine :getFuel()-Methode, die den aktuellen Tankfüllstand zurückgibt.
  • Car.lua: Erbt von Vehicle und verwendet das Refuelable-Mixin. Der Konstruktor akzeptiert einen name und initialisiert _fuel auf 0. Überschreibe :describe(), sodass "{name} moving at {speed}, fuel: {fuel}" zurückgegeben wird. Wende das Refuelable-Mixin an, damit Autos über Tankfunktionen verfügen.
  • Bicycle.lua: Erbt ausschließlich von Vehicle: Es wird keine Tankfunktion benötigt. Der Konstruktor akzeptiert nur einen name. Fahrräder verwenden die geerbte :describe()-Methode ohne Änderungen.
  • main.lua: Führe alles zusammen! Erstelle anhand der Eingaben ein Auto und ein Fahrrad, demonstriere ihre unterschiedlichen Fähigkeiten und zeige, wie sie gemeinsames Fahrzeugverhalten teilen und zugleich individuelle Merkmale besitzen.

Du erhältst vier Eingaben:

  1. Name des Autos
  2. Name des Fahrrads
  3. Geschwindigkeit, die für beide Fahrzeuge festgelegt werden soll (eine Zahl)
  4. Dem Auto hinzuzufügende Kraftstoffmenge (eine Zahl)

In deiner Hauptdatei:

  1. Erstelle ein Auto und ein Fahrrad mit den angegebenen Namen
  2. Lege die Geschwindigkeit für beide Fahrzeuge mithilfe der dritten Eingabe fest
  3. Betanke das Auto mit der vierten Eingabe
  4. Gib die Beschreibung des Autos aus
  5. Gib die Beschreibung des Fahrrads aus

Wenn die Eingaben beispielsweise Sedan, Mountain Bike, 60 und 45 lauten, 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 lauten, sollte die Ausgabe wie folgt aussehen:

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

Diese Aufgabe zeigt, wie Vererbung gemeinsames Verhalten bereitstellt (beide Fahrzeuge können sich bewegen), Mixins optionale Fähigkeiten hinzufügen (nur Autos benötigen Kraftstoff) und Kapselung die Datenintegrität schützt (Validierung der Geschwindigkeit). Jede Technik erfüllt in deinem Entwurf einen anderen Zweck!

Probier es selbst

-- main.lua: Alles zusammenbringen

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 gegebenen Namen

-- TODO: Erstelle ein Fahrrad mit dem gegebenen Namen

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

-- TODO: Tanke das Auto mit der Kraftstoffmenge auf

-- TODO: Gib die Beschreibung des Autos aus

-- TODO: Gib die Beschreibung des Fahrrads aus

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-Lua-Compiler