מדעי המחשב, קיץ תשפ”ג – מס’ 899371

מדעי המחשב, קיץ תשפ”ג – מס’ 899371


מחלקה MyTime

המחלקה MyTime מייצגת זמן, ולה שתי תכונות:

  • myMinute – מספר שלם חיובי בין 0 ל־59 (כולל), המייצג דקה.
  • myHour – מספר שלם חיובי בין 7 ל־23 (כולל), המייצג שעה.

הנחות:

  • קיימות פעולות get/Get ו־set/Set עבור תכונות המחלקה.
  • קיימת פעולה בונה המקבלת ערכים עבור תכונות המחלקה.

ממשק המחלקה

אפשר להשתמש בפעולות המחלקה בלי לממש אותן.

כותרת הפעולה תיאור הפעולה
Java – public boolean before(MyTime other)
C# – public bool Before(MyTime other)
הפעולה מחזירה true אם זמן העצם הנוכחי מוקדם מזמן העצם other. אחרת (כלומר אם הזמן שווה לו או מאוחר ממנו) מחזירה false.
Java – public int diff(MyTime other)
C# – public int Diff(MyTime other)
הפעולה מחזירה את ההפרש בדקות (בערך מוחלט) בין זמן העצם הנוכחי ובין זמן העצם other.

מחלקה Parking

המחלקה Parking מציגה מידע על מכונית שחנתה בחניון, ולה שלוש תכונות:

  • id – מספר לוחית רישוי של המכונית (מחרוזת).
  • in – זמן כניסת המכונית לחניון (מטיפוס MyTime).
  • out – זמן יציאת המכונית מן החניון (מטיפוס MyTime).

הנחות:

  • קיימות פעולות get/Get ו־set/Set עבור תכונות המחלקה.
  • תכונות המחלקה אינן null.

נתון מערך חד־ממדי cars מטיפוס Parking, המכיל מידע על כל המכוניות שחנו בחניון ביממה מסוימת (החניון נפתח ב־07:00 ונסגר ב־23:59).
המערך אינו ממוין ויכול להכיל ערכי null.


סעיפים

א. פעולה חיצונית First

כתבו פעולה חיצונית בשם

  • Java: first
  • C#: First

המקבלת את המערך cars, ומדפיסה את מספר לוחית הרישוי של המכונית שנכנסה ראשונה לחניון.
הניחו שאין שתי מכוניות שנכנסו בדיוק באותו זמן.


ב. חישוב משך החניה ותשלום

המחיר בחניון נקבע על פי משך החניה:

  • השעתיים הראשונות (120 דקות) – חינם.
  • מהדקה ה־121 – שקל אחד לכל דקת חניה.

(1) פעולה פנימית Total

במחלקה Parking, כתבו פעולה פנימית:

  • Java: total
  • C#: Total

המחזירה את סך כל מספר הדקות שהמכונית חנתה בחניון.

(2) פעולה חיצונית SumMoney

כתבו פעולה חיצונית:

  • Java: sumMoney
  • C#: SumMoney

המקבלת את המערך cars, ומחזירה את הסכום הכולל ששילמו כל בעלי המכוניות.
אפשר להשתמש בפעולה מהסעיף ב(1).