מערכת מחשוב של בנק "SimpleBank" כוללת שתי מחלקות הבאות: Account ו-Branch.
מערכת מחשוב של בנק "SimpleBank" כוללת שתי מחלקות הבאות: Account ו-Branch.
למחלקה Account (חשבון) ארבע תכונות:
- מספר חשבון – num, מטיפוס מספר שלם – int
- תעודת הזהות של הלקוח – id, מטיפוס מחרוזת – string
- יתרה בחשבון – balance, מטיפוס מספר ממשי – double
- מצב חשבון – isActive, מטיפוס bool (true – חשבון פעיל, ו-false – חשבון לא פעיל) בעת פתיחת חשבון לקוח מקבל מתנה ₪100 ליתרת חשבון.
למחלקה Branch (סניף) תכונות הבאות:
- מספר סניף – branchNum, מטיפוס שלם – int
- מערך חשבונות – accounts – מערך הפניות לעצמים מסוג Account
- מספר חשבונות בפועל – current, מטיפוס מספר שלם – int
בעת פתיחת סניף חדש יש ליצור מערך בגודל maxAccount (מספר החשבונות המקסימלי בסניף המתקבל כפרמטר) ללא חשבונות בפועל.
כתבו במחלקות Account ו-Branch פעולות בונות (constructors):
public Account(int num, string id)
public Branch(int branchNum, int maxAccount)
בסעיפים הבאים אפשר להניח שקיימות פעולות Get/Set לכל בשתי המחלקות. במחלקה Branch קיימת פעולה פנימית ליצירת מספר חשבון, המבטיחה שמספר חשבון יהיה ייחודי בסניף. אפשר להשתמש בפעולה זו ולא צריך לממש אותה. כותרת הפעולה:
public int GenerateNum()
כדי למשוך לקוחות חדשים החליטה הנהלת הבנק על מבצע הבא: כל לקוח חדש (זה שאין לו חשבון בסניף) מקבל מתנה של ₪500 בעת פתיחת חשבון (אם ללקוח יש כבר חשבון הוא מקבל מתנה "רגילה" של ₪100). כתבו במחלקה Branch פעולה להוספת חשבון חדש:
public void AddAccount(string id)
אפשר להניח שבמערך יש מקום לחשבון חדש.
כאשר לקוח רוצה לעבור מסניף br1 לסניף br2 כל החשבונות שלו בסניף br1 נסגרים (הופכים להיות "לא פעילים") ובסניף br2 נפתח חשבון חדש עם יתרה השווה לסכום היתרות שהיו לו בסניף הקודם. אין צורך במחיקה חשבונות שנסגרו. כתבו פעולה חיצונית המבצעת מעבר לקוח מסניף לסניף. כותרת הפעולה:
public static void MoveClient(string id, Branch br1, Branch br2)
שימו לב: לקוח העובר מסניף לסניף הוא לא לקוח חדש ולא מגיעה לו מתנה (גם לא מתנה רגילה).
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.