אתם מתרגלים שאלה מתוך בגרות מדעי המחשב — מבני נתונים (שאלון 899271)מבחן 2020 · קיץ מועד א · שאלה 16כל שאלות המבחן ←
תכנות מונחה עצמיםירושה

בחברת התקשורת "אוזניים לעתיד" יש 4 סוגי עובדים: עובד רגיל — Employee, חבר ועד — UnionMember, טכנאי — Technician, אחראי פרויקט — Supervisor. כל עובד שייך לסוג אחד בלבד. ההחלטות מתקבלות באמצעות הצבעת כל עובדי החברה, שההשפעה של כל עובד בה נמדדת על-פי מספר נקודות שיש לו, לפי סוגו:

  • עובד רגיל: מקבל 4 נקודות עבור היותו עובד בחברה, ונוסף על כך מקבל עוד נקודה עבור כל שנת ותק שיש לו בחברה. (דוגמה: 5 שנות ותק → 4+5=9 נקודות.)
  • חבר ועד: מקבל פי 2 ממספר הנקודות שעובד רגיל מקבל, ונוסף על כך מקבל 2 נקודות עבור כל שנה שהוא חבר בוועד. (דוגמה: 5 שנות ותק, 3 שנות חברות בוועד → 29+23=24.)
  • טכנאי: מקבל נקודות כמו עובד רגיל, ונוסף על כך מקבל נקודה עבור כל מחשב שבאחריותו. (דוגמה: 5 שנות ותק, 4 מחשבים → 9+4=13.)
  • אחראי פרויקט: מקבל נקודות כמו עובד רגיל, ונוסף על כך מקבל מספר נקודות השווה לסך הנקודות של כל 15 העובדים שעליהם הוא אחראי. (דוגמה: 5 שנות ותק, סך נקודות ה-15 עובדים = 80 → 9+80=89.) הועלתה הצעה לשנות את שם החברה ל"תקשורת עתידית". עובדים רגילים וטכנאים תומכים בהצעה; חברי ועד ואחראי פרויקטים מתנגדים לה. ההצעה מתקבלת רק אם סך הנקודות בעד ההצעה גדול (ממש) מסך הנקודות נגדה.
סעיף א

סרטט תרשים היררכייה בין המחלקות בהתאם לתיאור. יש לסמן ירושה ממחלקה באמצעות החץ ← והכלה (קומפוזיציה) באמצעות הסימן ◆.

סעיף ב

עבור כל אחת מן המחלקות Employee, UnionMember, Technician, Supervisor כתוב את התכונות שלה ואת הפעולה getScore() המחזירה את ניקודה, בהתאם לתיאור. הנחיה: אין צורך לכתוב פעולות get/set או פעולות בונה. הנחיה נוספת: הנתונים הקבועים של מספר הנקודות (למשל "4", "2") אינם חלק מתכונות המחלקה — יש להשתמש בהם רק בכתיבת הפעולה getScore().

public int GetScore () // בכל אחת מ-Employee, UnionMember, Technician, Supervisor

סעיף ג

נתונה כותרת הפעולה המקבלת מערך של כל העובדים ומחזירה true אם ההצעה (שינוי שם החברה) מתקבלת, false אם לא: public static boolean isAccepted (Object[] arr). ממש את הפעולה — עובדים רגילים וטכנאים בעד; חברי ועד ואחראי פרויקטים נגד; ההצעה מתקבלת רק אם סך הנקודות בעד גדול ממש מסך הנקודות נגד.

public static bool IsAccepted (Object[] arr)

שאלות ותגובות על השאלה

🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות

שאלו כאן — ותקבלו מענה מוסמך.

🎓 מרצה לתכנות עונה כאן — תקבלו מענה מקצועי