Menu
CoddyTech

Wiederholung – Bankkontenverwaltung

Teil des Abschnitts Objektorientierte Programmierung der GDScript-Journey von Coddy. Lektion 14 von 65.

challenge icon

Aufgabe

Mittel

Schreibe die Klasse BankAccount in bank_account.gd. Sie vereint alles aus diesem Kapitel.

  • Eine statische int-Variable interest_percent, die mit 2 beginnt und von allen Konten gemeinsam genutzt wird
  • Zwei private Eigenschaften: _owner_name (ein String) und _balance (ein int, der mit 0 beginnt)
  • Eine schreibgeschützte Eigenschaft owner_name, deren Getter _owner_name zurückgibt
  • Eine Eigenschaft balance, deren Getter _balance zurückgibt und deren Setter bei einem negativen Wert Balance cannot be negative ausgibt und andernfalls den Wert in _balance speichert
  • Der Konstruktor _init(account_owner, start_balance) speichert den Kontoinhaber und weist start_balance balance zu, sodass der Setter den Wert überprüft

Und diese Methoden:

  • deposit(amount): Gibt Deposit amount must be positive aus und gibt false zurück, wenn amount 0 oder kleiner ist; andernfalls addiert er den Betrag und gibt true zurück
  • withdraw(amount): Gibt Withdrawal amount must be positive aus und gibt false zurück, wenn amount 0 oder kleiner ist; gibt Insufficient funds aus und gibt false zurück, wenn der Betrag größer als der Kontostand ist; andernfalls zieht er den Betrag ab und gibt true zurück
  • apply_interest(): Addiert _balance * interest_percent / 100 (ganze Dollar) zum Kontostand und gibt diesen Zinsbetrag zurück
  • display_info(): Gibt drei Zeilen aus: Account Owner: NAME, Balance: $BALANCE und Interest Rate: PERCENT%

Der bereitgestellte Code liest owner start_balance, die Anzahl der folgenden Befehle und die Befehle deposit N, withdraw N, set N (weist balance einen Wert zu), interest, rate N (setzt BankAccount.interest_percent) und info ein. Er gibt für jede erfolgreiche Einzahlung, Abhebung und Zinsgutschrift eine Zeile sowie am Ende den Kontostand des Kontoinhabers aus. Für Coddy 1000 und die Befehle deposit 500, withdraw 200, interest, info, set 5000 und withdraw 10000 gibt er Folgendes aus:

Deposited $500
Withdrew $200
Interest earned: $26
Account Owner: Coddy
Balance: $1326
Interest Rate: 2%
Insufficient funds
Coddy has $5000

Dein Code gehört in bank_account.gd. main.gd enthält den bereitgestellten Ein-/Ausgabecode und kann nicht bearbeitet werden.

Probier es selbst

extends Node

func _ready():
	# Vorgegebener Ein-/Ausgabecode: unverändert lassen
	var first := OS.read_string_from_stdin().split(" ")
	var account := BankAccount.new(first[0], int(first[1]))
	var count := int(OS.read_string_from_stdin())
	for i in count:
		var parts := OS.read_string_from_stdin().split(" ")
		match parts[0]:
			"deposit":
				if account.deposit(int(parts[1])):
					print("Deposited $%s" % parts[1])
			"withdraw":
				if account.withdraw(int(parts[1])):
					print("Withdrew $%s" % parts[1])
			"set":
				account.balance = int(parts[1])
			"interest":
				print("Interest earned: $%d" % account.apply_interest())
			"rate":
				BankAccount.interest_percent = int(parts[1])
			"info":
				account.display_info()
	print("%s has $%d" % [account.owner_name, account.balance])

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-GDScript-Compiler