Menu
CoddyTech

Podsumowanie — menedżer kont bankowych

Część sekcji Programowanie obiektowe ścieżki GDScript w Coddy. Lekcja 14 z 65.

challenge icon

Wyzwanie

Średni

Napisz klasę BankAccount w pliku bank_account.gd. Łączy ona w sobie wszystko z tego rozdziału.

  • Statyczna zmienna typu int o nazwie interest_percent, która zaczyna od wartości 2 i jest współdzielona przez wszystkie konta
  • Dwie prywatne właściwości: _owner_name (typu String) i _balance (typu int, zaczyna od wartości 0)
  • Właściwość tylko do odczytu owner_name, której getter zwraca _owner_name
  • Właściwość balance, której getter zwraca _balance, a setter wypisuje Balance cannot be negative dla wartości ujemnej, a w przeciwnym razie zapisuje wartość w _balance
  • Konstruktor _init(account_owner, start_balance) zapisuje właściciela i przypisuje start_balance do balance, aby setter mógł to sprawdzić

Oraz następujące metody:

  • deposit(amount): wypisuje Deposit amount must be positive i zwraca false, gdy amount wynosi 0 lub mniej; w przeciwnym razie dodaje tę kwotę i zwraca true
  • withdraw(amount): wypisuje Withdrawal amount must be positive i zwraca false, gdy amount wynosi 0 lub mniej; wypisuje Insufficient funds i zwraca false, gdy kwota jest większa niż saldo; w przeciwnym razie odejmuje tę kwotę i zwraca true
  • apply_interest(): dodaje do salda _balance * interest_percent / 100 (w całych dolarach) i zwraca naliczone odsetki
  • display_info(): wypisuje trzy wiersze: Account Owner: NAME, Balance: $BALANCE i Interest Rate: PERCENT%

Dostarczony kod odczytuje owner start_balance, liczbę następujących po nich poleceń oraz polecenia deposit N, withdraw N, set N (przypisuje wartość do balance), interest, rate N (ustawia BankAccount.interest_percent) i info. Wypisuje wiersz dla każdej udanej wpłaty, wypłaty i płatności odsetek, a na końcu saldo właściciela. Dla Coddy 1000 i poleceń deposit 500, withdraw 200, interest, info, set 5000 i withdraw 10000 wypisuje:

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

Twój kod umieść w pliku bank_account.gd. Plik main.gd zawiera dostarczony kod wejścia/wyjścia i nie można go edytować.

Spróbuj swoich sił

extends Node

func _ready():
	# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
	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])

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator GDScript online