נתונה המחלקה TourPackage – חבילת סלולר לטסים לחו"ל, ולה חמש תכונות:
id – מספר זיהוי של לקוח, מטיפוס שלםprice – מחיר החבילה, מטיפוס שלםmaxTime – מספר דקות השיחה הכלול בחבילה, מטיפוס שלםmaxData – נפח הנתונים (ב־ Giga) לגלישה באינטרנט הכלול בחבילה, מטיפוס שלםextra – הסכום לתשלום על חריגה ממספר הדקות ומנפח הנתונים הכלולים בחבילה הבסיסית, מטיפוס שלםתעריפי החריגה הם שקל אחד בעבור כל דקת שיחה נוספת, ו־ 2 שקלים בעבור כל Giga נוסף בנפח הגלישה.
הניחו שקיימות פעולות get/Get לתכונות המחלקה.
(1) כתבו פעולה בונה במחלקה TourPackage, המקבלת את מספר הזיהוי של לקוח – id, את מחיר החבילה – price, את מספר דקות השיחה הכלול בחבילה – maxTime, ואת נפח הנתונים - maxData.
הפעולה מאתחלת את תכונות המחלקה. התכונה extra מאותחלת ל־0.
(2) כתבו פעולה פנימית במחלקה TourPackage ששמה setExtra בשפת Java או SetExtra בשפת C#, המקבלת את מספר דקות השיחה שבהן השתמש הלקוח בפועל בחו"ל – minutes (מטיפוס שלם), ואת נפח הגלישה שבו השתמש הלקוח בפועל בחו"ל – usage (מטיפוס שלם).
הפעולה קובעת ערך לתכונה extra בהתאם לחריגה מן החבילה הבסיסית (ככל שיש) ולתעריפי החריגה.
הערה: extra היא 0 לפני הפעולה.
נתון מערך מלא packages מטיפוס TourPackage, שבו נתונים על לקוחות שונים (לאחר שכבר חושב ועודכן הסכום לתשלום עבור חריגה מן החבילה הבסיסית בתכונה extra).
(1) כתבו פעולה חיצונית ששמה calculate בשפת Java או Calculate בשפת C# המקבלת את המערך packages ומחזירה את כמות הלקוחות שצריכים לשלם תוספת על חריגה מן החבילה הבסיסית.
(2) כתבו פעולה חיצונית ששמה customers בשפת Java או Customers בשפת C#, המקבלת את המערך packages.
הפעולה מחזירה מערך מטיפוס שלם שבו מספרי הזיהוי של הלקוחות (id) שצריכים לשלם תוספת על חריגה מן החבילה הבסיסית (גודל המערך הוא לפי כמות האנשים שחרגו). אין חשיבות לסדר ההופעה במערך.
הערה: חובה להיעזר בפעולה שכתבתם בסעיף ב(1).
נתונה המחלקה TourPackage – חבילת סלולר לטסים לחו"ל, ולה חמש תכונות:
id – מספר זיהוי של לקוח, מטיפוס שלםprice – מחיר החבילה, מטיפוס שלםmaxTime – מספר דקות השיחה הכלול בחבילה, מטיפוס שלםmaxData – נפח הנתונים (ב־ Giga) לגלישה באינטרנט הכלול בחבילה, מטיפוס שלםextra – הסכום לתשלום על חריגה ממספר הדקות ומנפח הנתונים הכלולים בחבילה הבסיסית, מטיפוס שלםתעריפי החריגה הם שקל אחד בעבור כל דקת שיחה נוספת, ו־ 2 שקלים בעבור כל Giga נוסף בנפח הגלישה.
הניחו שקיימות פעולות get/Get לתכונות המחלקה.
(1) כתבו פעולה בונה במחלקה TourPackage, המקבלת את מספר הזיהוי של לקוח – id, את מחיר החבילה – price, את מספר דקות השיחה הכלול בחבילה – maxTime, ואת נפח הנתונים - maxData.
הפעולה מאתחלת את תכונות המחלקה. התכונה extra מאותחלת ל־0.
(2) כתבו פעולה פנימית במחלקה TourPackage ששמה setExtra בשפת Java או SetExtra בשפת C#, המקבלת את מספר דקות השיחה שבהן השתמש הלקוח בפועל בחו"ל – minutes (מטיפוס שלם), ואת נפח הגלישה שבו השתמש הלקוח בפועל בחו"ל – usage (מטיפוס שלם).
הפעולה קובעת ערך לתכונה extra בהתאם לחריגה מן החבילה הבסיסית (ככל שיש) ולתעריפי החריגה.
הערה: extra היא 0 לפני הפעולה.
נתון מערך מלא packages מטיפוס TourPackage, שבו נתונים על לקוחות שונים (לאחר שכבר חושב ועודכן הסכום לתשלום עבור חריגה מן החבילה הבסיסית בתכונה extra).
(1) כתבו פעולה חיצונית ששמה calculate בשפת Java או Calculate בשפת C# המקבלת את המערך packages ומחזירה את כמות הלקוחות שצריכים לשלם תוספת על חריגה מן החבילה הבסיסית.
(2) כתבו פעולה חיצונית ששמה customers בשפת Java או Customers בשפת C#, המקבלת את המערך packages.
הפעולה מחזירה מערך מטיפוס שלם שבו מספרי הזיהוי של הלקוחות (id) שצריכים לשלם תוספת על חריגה מן החבילה הבסיסית (גודל המערך הוא לפי כמות האנשים שחרגו). אין חשיבות לסדר ההופעה במערך.
הערה: חובה להיעזר בפעולה שכתבתם בסעיף ב(1).