Menu
CoddyTech

סיכום – מנהל חשבון בנק

חלק מהיחידה תכנות מונחה עצמים במסלול ה-GDScript של Coddy. שיעור 14 מתוך 65.

challenge icon

אתגר

בינוני

כתבו את המחלקה BankAccount בקובץ bank_account.gd. היא משלבת את כל מה שנלמד בפרק הזה.

  • משתנה int סטטי interest_percent שמתחיל ב־2, ומשותף לכל החשבונות
  • שתי תכונות פרטיות: _owner_name (מחרוזת String) ו־_balance (מספר שלם int שמתחיל ב־0)
  • תכונה לקריאה בלבד owner_name, שה־getter שלה מחזיר את _owner_name
  • תכונה balance, שה־getter שלה מחזיר את _balance וה־setter שלה מדפיס את Balance cannot be negative עבור ערך שלילי, ואחרת שומר את הערך ב־_balance
  • הבנאי _init(account_owner, start_balance) שומר את שם הבעלים ומשייך את start_balance ל־balance, כך שה־setter בודק אותו

וגם המתודות הבאות:

  • deposit(amount): מדפיסה את Deposit amount must be positive ומחזירה false כאשר amount הוא 0 או פחות; אחרת מוסיפה אותו ומחזירה true
  • withdraw(amount): מדפיסה את Withdrawal amount must be positive ומחזירה false כאשר amount הוא 0 או פחות, מדפיסה את Insufficient funds ומחזירה false כאשר הוא גדול מהיתרה, ואחרת מחסירה אותו ומחזירה true
  • apply_interest(): מוסיפה ליתרה את _balance * interest_percent / 100 (בדולרים שלמים) ומחזירה את הריבית
  • display_info(): מדפיסה שלוש שורות: Account Owner: NAME, Balance: $BALANCE ו־Interest Rate: PERCENT%

הקוד שסופק קורא את owner start_balance, את מספר הפקודות שאחריהן ואת הפקודות deposit N, withdraw N, set N (משייכת ערך ל־balance), interest, rate N (מגדירה את BankAccount.interest_percent) ו־info. הוא מדפיס שורה עבור כל הפקדה, משיכה ותשלום ריבית מוצלחים, ואת יתרת הבעלים בסוף. עבור Coddy 1000 והפקודות deposit 500, withdraw 200, interest, info, set 5000 ו־withdraw 10000, הוא מדפיס:

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

כתבו את הקוד שלכם ב־bank_account.gd. הקובץ main.gd מכיל את קוד הקלט/פלט שסופק ואי אפשר לערוך אותו.

נסו בעצמכם

extends Node

func _ready():
	# קוד הקלט/פלט שסופק: יש להשאיר אותו כפי שהוא
	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])

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר GDScript אונליין