Menu
Coddy logo textTech

Abschließender Bank-Test

Teil des Abschnitts Objektorientierte Programmierung der Lua-Journey von Coddy. Lektion 25 von 70.

challenge icon

Aufgabe

Einfach

Herzlichen Glückwunsch zum Aufbau eines vollständigen Digital-Bank-Systems! Deine Account-Klasse verarbeitet jetzt Einzahlungen, Abhebungen, Kontostandsabfragen, Kontokennungen und Überweisungen zwischen Konten. Lass uns alles mit einem realistischen Bankenszenario mit mehreren Konten testen.

In dieser letzten Herausforderung simulierst du eine kleine Bank mit drei Kunden, die verschiedene Transaktionen durchführen. Dadurch wird überprüft, ob alle deine Methoden korrekt zusammenarbeiten und ob die Konten tatsächlich einen unabhängigen Zustand beibehalten.

Deine zwei Dateien:

  • Account.lua: Deine vollständige Account-Klasse mit allen Funktionen, die du im Verlauf dieses Projekts erstellt hast (Konstruktor mit ID, deposit, withdraw, getBalance, __tostring und transfer).
  • main.lua: Ein Simulationsskript, das mehrere Konten erstellt und eine Reihe von Transaktionen zwischen ihnen ausführt.

Du erhältst sechs Eingaben:

  1. ID von Konto 1
  2. ID von Konto 2
  3. ID von Konto 3
  4. Anfängliche Einzahlung für Konto 1
  5. Anfängliche Einzahlung für Konto 2
  6. Anfängliche Einzahlung für Konto 3

Simuliere in deiner Hauptdatei den folgenden Banktag:

  1. Erstelle drei Konten mit den angegebenen IDs
  2. Zahle die anfänglichen Beträge auf die jeweiligen Konten ein
  3. Konto 1 überweist 100 an Konto 2
  4. Konto 2 überweist 150 an Konto 3
  5. Konto 3 überweist 50 an Konto 1
  6. Konto 1 versucht, 1000 an Konto 3 zu überweisen (dies sollte fehlschlagen)
  7. Gib alle drei Konten in der richtigen Reihenfolge aus (Konto 1, dann 2, dann 3)

Wenn die Eingaben beispielsweise A001, A002, A003, 500, 300 und 200 lauten, sollte die Ausgabe wie folgt aussehen:

Insufficient funds
Account [A001]: Balance = 450
Account [A002]: Balance = 250
Account [A003]: Balance = 300

Gehen wir den Ablauf nach: Konto 1 beginnt mit 500 und überweist 100 an Konto 2 (jetzt 400). Anschließend erhält es 50 von Konto 3 (jetzt 450). Konto 2 beginnt mit 300, erhält 100 (jetzt 400) und überweist 150 an Konto 3 (jetzt 250). Konto 3 beginnt mit 200, erhält 150 (jetzt 350) und überweist 50 an Konto 1 (jetzt 300). Die abschließende Überweisung von 1000 schlägt fehl, weil Konto 1 nur 450 hat.

Probier es selbst

-- Erfordert das Account-Modul
local Account = require('Account')

-- Die sechs Eingaben lesen
local id1 = io.read()
local id2 = io.read()
local id3 = io.read()
local initialDeposit1 = tonumber(io.read())
local initialDeposit2 = tonumber(io.read())
local initialDeposit3 = tonumber(io.read())

-- Drei Konten mit IDs erstellen
-- TODO: account1, account2, account3 mit Account:new() erstellen

-- Die Anfangsbeträge auf die jeweiligen Konten einzahlen
-- TODO: initialDeposit1 auf account1, initialDeposit2 auf account2, initialDeposit3 auf account3 einzahlen

-- Konto 1 überweist 100 an Konto 2
-- TODO: account1:transfer(account2, 100)

-- Konto 2 überweist 150 an Konto 3
-- TODO: account2:transfer(account3, 150)

-- Konto 3 überweist 50 an Konto 1
-- TODO: account3:transfer(account1, 50)

-- Konto 1 versucht, 1000 an Konto 3 zu überweisen (dies sollte fehlschlagen)
-- TODO: account1:transfer(account3, 1000)

-- Alle drei Konten in der richtigen Reihenfolge ausgeben
-- TODO: account1, account2, account3 ausgeben

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-Lua-Compiler