Rechteck-Klasse
Teil des Abschnitts Objektorientierte Programmierung der Lua-Journey von Coddy. Lektion 56 von 70.
Aufgabe
EinfachJetzt erweitern wir unseren Shape Manager, indem wir eine Rectangle-Klasse erstellen, die von der Basisklasse Shape erbt, die du in der vorherigen Lektion erstellt hast.
Du arbeitest mit drei Dateien, damit dein Code übersichtlich bleibt:
Shape.lua: Deine Shape-Basisklasse aus der vorherigen Aufgabe (mit:new(name)und:getName()).Rectangle.lua: Erstelle eine Rectangle-Klasse, die von Shape erbt. Der Konstruktor sollwidthundheightakzeptieren, den übergeordneten Konstruktor mit dem Namen"Rectangle"aufrufen und die Abmessungen speichern. Füge eine:getArea()-Methode hinzu, die die Fläche des Rechtecks berechnet und zurückgibt.main.lua: Binde dein Rectangle-Modul ein, lies width und height aus der Eingabe ein, erstelle eine Rectangle-Instanz und gib ihren Namen gefolgt von ihrer Fläche in separaten Zeilen aus.
Denke daran, die Vererbungsverknüpfung korrekt einzurichten, damit Rectangle-Instanzen über die Prototypenkette auf die Methoden von Shape zugreifen können.
Eingabe: Zwei Zeilen: Die erste enthält die Breite (Zahl), die zweite die Höhe (Zahl).
Ausgabe: Zwei Zeilen: zuerst der Name des Rechtecks aus :getName(), dann seine Fläche aus :getArea().
Probier es selbst
-- Das Rectangle-Modul einbinden
local Rectangle = require('Rectangle')
-- Breite und Höhe von der Eingabe lesen
local width = tonumber(io.read())
local height = tonumber(io.read())
-- Eine neue Rectangle-Instanz mit den gegebenen Abmessungen erstellen
local rect = Rectangle:new(width, height)
-- Namen und Fläche des Rechtecks ausgeben
print(rect:getName())
print(rect:getArea())
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