Geld überweisen
Teil des Abschnitts Object Oriented Programming der Lua-Journey von Coddy — Lektion 24 von 70.
Aufgabe
EinfachIhre Digital Bank ist fast fertig! Das letzte große Feature ist die Möglichkeit, Geld zwischen Konten zu überweisen. Hier glänzt Ihr objektorientiertes Design so richtig – ein Konto-Objekt kann direkt mit einem anderen Konto-Objekt interagieren.
Sie werden eine :transfer(targetAccount, amount) Methode hinzufügen, die Geld von einem Konto auf ein anderes verschiebt. Überlegen Sie, was dieser Vorgang eigentlich beinhaltet: Es ist eine Abhebung vom Quellkonto, gefolgt von einer Einzahlung auf das Zielkonto. Das Schöne daran ist, dass Sie die bereits erstellten Methoden wiederverwenden können!
Bauen Sie weiter auf Ihren bestehenden Dateien auf:
Account.lua: Fügen Sie Ihrer Account-Klasse eine:transfer(targetAccount, amount)Methode hinzu. Diese Methode sollte versuchen, den Betrag vonselfabzuheben, und bei Erfolg diesen Betrag auf dastargetAccounteinzahlen. Wenn die Abhebung fehlschlägt (unzureichende Deckung), sollte die Überweisung nicht stattfinden. Behalten Sie alle Ihre vorhandenen Funktionen bei (Konstruktor mit ID, deposit, withdraw, getBalance und __tostring).main.lua: Erstellen Sie mehrere Konten und demonstrieren Sie Überweisungen zwischen ihnen, um zu zeigen, wie sich die Salden über verschiedene Konto-Objekte hinweg ändern.
Sie erhalten fünf Eingaben:
- ID des ersten Kontos
- ID des zweiten Kontos
- Erste Einzahlung auf das erste Konto
- Erster Überweisungsbetrag (von Konto 1 auf Konto 2)
- Zweiter Überweisungsbetrag (von Konto 1 auf Konto 2)
Erstellen Sie in Ihrer Hauptdatei zwei Konten mit den angegebenen IDs (beide beginnend mit einem Saldo von 0), zahlen Sie den Anfangsbetrag auf das erste Konto ein und versuchen Sie dann beide Überweisungen vom ersten auf das zweite Konto. Geben Sie nach jedem Überweisungsversuch beide Konten aus (die __tostring Methode zeigt ihren aktuellen Zustand an).
Wenn die Eingaben beispielsweise 101, 102, 500, 200 und 400 sind, sollte die Ausgabe wie folgt aussehen:
Account [101]: Balance = 300
Account [102]: Balance = 200
Insufficient funds
Account [101]: Balance = 300
Account [102]: Balance = 200Das erste Konto beginnt nach der Einzahlung mit 500. Die erste Überweisung von 200 ist erfolgreich, sodass Konto 101 mit 300 und Konto 102 mit 200 verbleibt. Die zweite Überweisung von 400 schlägt fehl, da Konto 101 nur 300 hat – daher bleiben beide Salden unverändert.
Probier es selbst
-- Erfordert das Account-Modul
local Account = require('Account')
-- Die fünf Eingaben lesen
local id1 = io.read()
local id2 = io.read()
local initialDeposit = tonumber(io.read())
local transfer1 = tonumber(io.read())
local transfer2 = tonumber(io.read())
-- Zwei Konten mit IDs erstellen
local account1 = Account:new(id1)
local account2 = Account:new(id2)
-- Den Anfangsbetrag auf das erste Konto einzahlen
account1:deposit(initialDeposit)
-- TODO: Ersten Transfer von account1 zu account2 versuchen
-- TODO: Beide Konten nach dem ersten Transfer ausgeben
-- TODO: Zweiten Transfer von account1 zu account2 versuchen
-- TODO: Beide Konten nach dem zweiten Transfer ausgeben
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