Kontoinformationen
Teil des Abschnitts Objektorientierte Programmierung der Lua-Journey von Coddy. Lektion 23 von 70.
Aufgabe
EinfachDeine Digitalbank wird immer professioneller! Jetzt sorgen wir dafür, dass deine Konten bei der Ausgabe übersichtlich dargestellt werden. Durch das Hinzufügen einer __tostring-Metamethode kannst du genau festlegen, wie ein Konto angezeigt wird: mit sowohl einer Konto-ID als auch dem aktuellen Kontostand in einem klaren, lesbaren Format.
Du baust weiterhin auf deinen vorhandenen Dateien auf:
Account.lua: Erweitere deine Account-Klasse um zwei neue Funktionen:- Ändere den
:new()-Konstruktor so, dass er einenid-Parameter akzeptiert, der jedes Konto identifiziert - Füge eine
__tostring-Metamethode hinzu, die eine formatierte Zeichenkette mit den Kontoinformationen zurückgibt
- Ändere den
main.lua: Erstelle Konten mit IDs und zeige, wie sie bei der Ausgabe dargestellt werden.
Die __tostring-Methode sollte eine Zeichenkette in diesem exakten Format zurückgeben:
Account [ID]: Balance = BALANCEDabei ist ID die ID des Kontos und BALANCE der aktuelle Kontostand.
Du erhältst vier Eingaben:
- ID des ersten Kontos
- Einzahlungsbetrag für das erste Konto
- ID des zweiten Kontos
- Einzahlungsbetrag für das zweite Konto
Erstelle in deiner Hauptdatei zwei Konten mit den angegebenen IDs, zahle die jeweiligen Beträge auf jedes Konto ein und gib anschließend jedes Konto direkt mit print() aus. Die __tostring-Metamethode wird automatisch aufgerufen, wenn du das Kontoobjekt ausgibst.
Wenn die Eingaben beispielsweise 1001, 500, 1002 und 750 lauten, sollte die Ausgabe wie folgt aussehen:
Account [1001]: Balance = 500
Account [1002]: Balance = 750Jedes Konto besitzt nun eine eindeutige Identität und kann sich klar selbst beschreiben: eine deutlich professionellere Bankerfahrung!
Probier es selbst
-- Account-Modul einbinden
local Account = require('Account')
-- Die vier Eingaben lesen
local id1 = io.read()
local deposit1 = tonumber(io.read())
local id2 = io.read()
local deposit2 = tonumber(io.read())
-- Zwei Accounts mit IDs erstellen
local account1 = Account:new(id1)
local account2 = Account:new(id2)
-- Die jeweiligen Beträge einzahlen
account1:deposit(deposit1)
account2:deposit(deposit2)
-- Jeden Account ausgeben (verwendet __tostring)
print(account1)
print(account2)
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