Rechteck-Klasse
Teil des Abschnitts Object Oriented Programming der Lua-Journey von Coddy — Lektion 56 von 70.
Aufgabe
EinfachLassen Sie uns nun unseren Shape Manager erweitern, indem wir eine Rectangle-Klasse erstellen, die von der Basisklasse Shape erbt, die Sie in der vorherigen Lektion erstellt haben.
Sie werden mit drei Dateien arbeiten, um Ihren Code organisiert zu halten:
Shape.lua: Ihre Basisklasse Shape aus der vorherigen Herausforderung (mit:new(name)und:getName()).Rectangle.lua: Erstellen Sie eine Rectangle-Klasse, die von Shape erbt. Der Konstruktor solltewidthundheightakzeptieren, den Eltern-Konstruktor mit dem Namen"Rectangle"aufrufen und die Dimensionen speichern. Fügen Sie eine:getArea()-Methode hinzu, die die Fläche des Rechtecks berechnet und zurückgibt.main.lua: Binden Sie Ihr Rectangle-Modul ein, lesen Sie Breite und Höhe aus der Eingabe, erstellen Sie eine Rectangle-Instanz und geben Sie deren Namen gefolgt von der Fläche in separaten Zeilen aus.
Denken Sie daran, die Vererbung 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 – 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 aus der Eingabe lesen
local width = tonumber(io.read())
local height = tonumber(io.read())
-- Erstellt eine neue Rectangle-Instanz mit den gegebenen Dimensionen
local rect = Rectangle:new(width, height)
-- Name und Fläche des Rechtecks ausgeben
print(rect:getName())
print(rect:getArea())
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