Kontostand abrufen
Teil des Abschnitts Object Oriented Programming der Lua-Journey von Coddy — Lektion 22 von 70.
Aufgabe
EinfachIhre digitale Bank nimmt wirklich Gestalt an! Konten können Einzahlungen entgegennehmen und Abhebungen mit ordnungsgemäßer Deckungsprüfung verarbeiten. Lassen Sie uns nun eine Getter-Methode hinzufügen, um den Kontostand abzurufen, und dann alles in einem realistischen Bank-Szenario zusammenführen.
Sie werden auf Ihren bestehenden Dateien weiter aufbauen:
Account.lua: Fügen Sie eine:getBalance()-Methode hinzu, die den aktuellen Kontostand zurückgibt. Dies folgt dem Getter-Muster, das Sie zuvor gelernt haben – es bietet kontrollierten Zugriff auf interne Daten, anstatt direkt auf das Feld zuzugreifen. Behalten Sie alle Ihre vorhandenen Funktionen (Konstruktor, Einzahlungs- und Abhebungsmethoden) bei.main.lua: Erstellen Sie ein Konto und führen Sie eine Sequenz von Bankgeschäften durch, um zu demonstrieren, wie Einzahlungen, Abhebungen und Kontostandsabfragen in einem realen Szenario zusammenarbeiten.
Sie erhalten fünf Eingaben:
- Betrag der Ersteinzahlung
- Betrag der ersten Abhebung
- Betrag der zweiten Einzahlung
- Betrag der zweiten Abhebung
- Betrag der dritten Abhebung
Erstellen Sie in Ihrer Hauptdatei ein Konto und führen Sie diese Operationen in der folgenden Reihenfolge aus:
- Zahlen Sie den Anfangsbetrag ein und geben Sie dann den Kontostand mit
:getBalance()aus - Heben Sie den ersten Betrag ab und geben Sie dann den Kontostand aus
- Zahlen Sie den zweiten Betrag ein und geben Sie dann den Kontostand aus
- Heben Sie den zweiten Betrag ab und geben Sie dann den Kontostand aus
- Versuchen Sie die dritte Abhebung und geben Sie dann den Kontostand aus
Denken Sie daran, dass fehlgeschlagene Abhebungen Insufficient funds ausgeben, bevor Sie den Kontostand drucken.
Wenn die Eingaben beispielsweise 200, 50, 100, 180 und 100 sind, sollte die Ausgabe wie folgt aussehen:
200
150
250
70
Insufficient funds
70Das Konto beginnt bei 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, wenn die letzte Abhebung von 100 wegen unzureichender Deckung fehlschlägt.
Probier es selbst
-- Erfordert das Account-Modul
local Account = require('Account')
-- Die fünf Eingaben lesen
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 den Kontostand mit :getBalance() ausgeben
account:deposit(initialDeposit)
print(account:getBalance())
-- Ersten Abhebungsversuch durchführen und Kontostand ausgeben
account:withdraw(withdrawal1)
print(account:getBalance())
-- Den zweiten Betrag einzahlen und den Kontostand ausgeben
account:deposit(deposit2)
print(account:getBalance())
-- Zweiten Abhebungsversuch durchführen und Kontostand ausgeben
account:withdraw(withdrawal2)
print(account:getBalance())
-- Dritten Abhebungsversuch durchführen und Kontostand ausgeben
account:withdraw(withdrawal3)
print(account:getBalance())
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