Menu
Coddy logo textTech

Geld überweisen

Teil des Abschnitts Object Oriented Programming der Lua-Journey von Coddy — Lektion 24 von 70.

challenge icon

Aufgabe

Einfach

Ihre 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 von self abzuheben, und bei Erfolg diesen Betrag auf das targetAccount einzahlen. 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:

  1. ID des ersten Kontos
  2. ID des zweiten Kontos
  3. Erste Einzahlung auf das erste Konto
  4. Erster Überweisungsbetrag (von Konto 1 auf Konto 2)
  5. 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 = 200

Das 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