Menu
Coddy logo textTech

Auszahlungsmethode

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

challenge icon

Aufgabe

Einfach

Deine Digitalbank wächst! Konten können jetzt Einzahlungen erhalten, aber eine echte Bank muss Kundinnen und Kunden auch ermöglichen, Geld abzuheben. Fügen wir eine :withdraw(amount)-Methode hinzu, jedoch mit einer wichtigen Sicherheitsprüfung.

Im Gegensatz zu Einzahlungen können Abhebungen fehlschlagen. Wenn eine Kundin oder ein Kunde versucht, mehr Geld abzuheben, als vorhanden ist, sollte die Bank dies nicht zulassen. Deine withdraw-Methode muss prüfen, ob ausreichendes Guthaben vorhanden ist, bevor sie den Betrag abzieht.

Du arbeitest weiterhin mit deinen zwei Dateien:

  • Account.lua: Füge deiner vorhandenen Account-Klasse eine :withdraw(amount)-Methode hinzu. Wenn das Konto über ausreichend Guthaben verfügt, ziehe den Betrag ab und gib true zurück. Wenn nicht genügend Guthaben vorhanden ist, gib Insufficient funds aus und gib false zurück, ohne das Guthaben zu ändern.
  • main.lua: Erstelle ein Konto, zahle Geld ein, damit es über Guthaben verfügt, und versuche anschließend mehrere Abhebungen, um sowohl erfolgreiche als auch fehlgeschlagene Transaktionen zu sehen.

Du erhältst vier Eingaben:

  1. Anfangsbetrag der Einzahlung
  2. Betrag der ersten Abhebung
  3. Betrag der zweiten Abhebung
  4. Betrag der dritten Abhebung

Erstelle in deiner Hauptdatei ein Konto, zahle den Anfangsbetrag ein und versuche anschließend jede Abhebung in der angegebenen Reihenfolge. Gib nach jedem Abhebungsversuch das aktuelle Guthaben in einer neuen Zeile aus. Denke daran, dass fehlgeschlagene Abhebungen ebenfalls Insufficient funds ausgeben, bevor du das Guthaben ausgibst.

Wenn die Eingaben beispielsweise 100, 30, 50 und 40 lauten, sollte die Ausgabe wie folgt aussehen:

70
20
Insufficient funds
20

Das Konto beginnt nach der Einzahlung mit 100. Die erste Abhebung von 30 ist erfolgreich (Guthaben: 70), die zweite Abhebung von 50 ist erfolgreich (Guthaben: 20), aber die dritte Abhebung von 40 schlägt fehl, weil nur noch 20 vorhanden sind. Daher bleibt das Guthaben bei 20.

Probier es selbst

-- Account-Modul einbinden
local Account = require('Account')

-- Die vier Eingaben einlesen
local initialDeposit = tonumber(io.read())
local withdrawal1 = tonumber(io.read())
local withdrawal2 = tonumber(io.read())
local withdrawal3 = tonumber(io.read())

-- Ein einzelnes Konto erstellen
local account = Account:new()

-- Den Anfangsbetrag einzahlen
account:deposit(initialDeposit)

-- Ersten Abhebungsversuch und Kontostand ausgeben
-- TODO: hier account:withdraw(withdrawal1) aufrufen
print(account.balance)

-- Zweiten Abhebungsversuch und Kontostand ausgeben
-- TODO: hier account:withdraw(withdrawal2) aufrufen
print(account.balance)

-- Dritten Abhebungsversuch und Kontostand ausgeben
-- TODO: hier account:withdraw(withdrawal3) aufrufen
print(account.balance)

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-Lua-Compiler