Menu
Coddy logo textTech

Abschließender Bank-Test

Teil des Abschnitts Object Oriented Programming 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 nun Einzahlungen, Auszahlungen, Kontostandsabfragen, Kontoidentifikationen und Überweisungen zwischen Konten. Lass uns das Ganze mit einem realistischen Bank-Szenario mit mehreren Konten auf die Probe stellen.

In dieser finalen Herausforderung simulierst du eine kleine Bank mit drei Kunden, die verschiedene Transaktionen tätigen. Dies wird bestätigen, dass alle deine Methoden korrekt zusammenarbeiten und dass die Konten tatsächlich einen unabhängigen Status beibehalten.

Deine zwei Dateien:

  • Account.lua: Deine vollständige Account-Klasse mit allen Funktionen, die du in diesem Projekt aufgebaut 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 wirst sechs Eingaben erhalten:

  1. ID für Konto 1
  2. ID für Konto 2
  3. ID für Konto 3
  4. Ersteinzahlung für Konto 1
  5. Ersteinzahlung für Konto 2
  6. Ersteinzahlung für Konto 3

Simuliere in deiner Hauptdatei den folgenden Bankarbeitstag:

  1. Erstelle drei Konten mit den angegebenen IDs
  2. Zahle die Anfangsbeträge auf das jeweilige Konto 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 Reihenfolge aus (Konto 1, dann 2, dann 3)

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

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

Lass uns den Ablauf verfolgen: Konto 1 beginnt mit 500, überweist 100 an Konto 2 (jetzt 400) und erhält dann 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 letzte Überweisung von 1000 schlägt fehl, da 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 Object Oriented Programming