Kontostand abrufen
Teil des Abschnitts Objektorientierte Programmierung der Lua-Journey von Coddy. Lektion 22 von 70.
Aufgabe
EinfachDeine Digitalbank nimmt wirklich Gestalt an! Konten können Einzahlungen empfangen und Abhebungen mit einer ordnungsgemäßen Guthabenprüfung durchführen. Fügen wir nun eine Getter-Methode hinzu, um das Guthaben abzurufen, und setzen anschließend alles in einem realistischen Bankszenario zusammen.
Du baust weiterhin auf deinen vorhandenen Dateien auf:
Account.lua: Füge eine:getBalance()-Methode hinzu, die das aktuelle Guthaben zurückgibt. Dies folgt dem Getter-Muster, das du zuvor kennengelernt hast: kontrollierten Zugriff auf interne Daten zu ermöglichen, anstatt direkt auf das Feld zuzugreifen. Behalte alle deine vorhandenen Funktionen bei (Konstruktor sowie Einzahlungs- und Abhebungsmethoden).main.lua: Erstelle ein Konto und führe eine Reihe von Bankoperationen durch, um zu zeigen, wie Einzahlungen, Abhebungen und Guthabenprüfungen in einem realistischen Szenario zusammenwirken.
Du erhältst fünf Eingaben:
- Anfänglicher Einzahlungsbetrag
- Erster Abhebungsbetrag
- Zweiter Einzahlungsbetrag
- Zweiter Abhebungsbetrag
- Dritter Abhebungsbetrag
Erstelle in deiner Hauptdatei ein Konto und führe diese Operationen in der angegebenen Reihenfolge durch:
- Zahle den Anfangsbetrag ein und gib anschließend das Guthaben mit
:getBalance()aus - Hebe den ersten Betrag ab und gib anschließend das Guthaben aus
- Zahle den zweiten Betrag ein und gib anschließend das Guthaben aus
- Hebe den zweiten Betrag ab und gib anschließend das Guthaben aus
- Versuche, den dritten Betrag abzuheben, und gib anschließend das Guthaben aus
Denke daran, dass fehlgeschlagene Abhebungen Insufficient funds ausgeben, bevor du das Guthaben ausgibst.
Wenn die Eingaben beispielsweise 200, 50, 100, 180 und 100 lauten, sollte die Ausgabe folgendermaßen aussehen:
200
150
250
70
Insufficient funds
70Das Konto beginnt mit 200, sinkt nach der ersten Abhebung auf 150, steigt nach einer weiteren Einzahlung auf 250, fällt nach der Abhebung von 180 auf 70 und bleibt bei 70, als die abschließende Abhebung von 100 wegen unzureichenden Guthabens fehlschlägt.
Probier es selbst
-- Account-Modul einbinden
local Account = require('Account')
-- Die fünf Eingaben einlesen
local initialDeposit = tonumber(io.read())
local withdrawal1 = tonumber(io.read())
local deposit2 = tonumber(io.read())
local withdrawal2 = tonumber(io.read())
local withdrawal3 = tonumber(io.read())
-- Ein einzelnes Konto erstellen
local account = Account:new()
-- Den Anfangsbetrag einzahlen und Kontostand mit :getBalance() ausgeben
account:deposit(initialDeposit)
print(account:getBalance())
-- Erste Abhebung versuchen und Kontostand ausgeben
account:withdraw(withdrawal1)
print(account:getBalance())
-- Den zweiten Betrag einzahlen und Kontostand ausgeben
account:deposit(deposit2)
print(account:getBalance())
-- Zweite Abhebung versuchen und Kontostand ausgeben
account:withdraw(withdrawal2)
print(account:getBalance())
-- Dritte Abhebung versuchen und Kontostand ausgeben
account:withdraw(withdrawal3)
print(account:getBalance())
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