סיכום – מנהל חשבון בנק
חלק מהיחידה תכנות מונחה עצמים במסלול ה-GDScript של Coddy. שיעור 14 מתוך 65.
אתגר
בינוניכתבו את המחלקה 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או פחות; אחרת מוסיפה אותו ומחזירהtruewithdraw(amount): מדפיסה אתWithdrawal amount must be positiveומחזירהfalseכאשרamountהוא0או פחות, מדפיסה אתInsufficient fundsומחזירהfalseכאשר הוא גדול מהיתרה, ואחרת מחסירה אותו ומחזירהtrueapply_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])
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים
קבצים חיצונייםמבוא ל-OOPמחלקות לעומת אובייקטיםמילת המפתח selfמתודותמאפייניםבנאי (_init)חזרה – מחשבון פשוט2מאפייני מחלקה
משתני מופע לעומת משתנים סטטייםפונקציות סטטיותקובעי מאפייניםמאחזרי מאפייניםפרטיים לפי מוסכמהסיכום – מנהל חשבון בנק5כימוס
איברים ציבוריים ופרטייםאימות באמצעות Settersהסתרת מידעמאפיינים לקריאה בלבדסיכום – מערכת לניהול רשומות תלמידיםתרגלו בעצמכם: קומפיילר GDScript אונליין