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

כדי לנהל את האירועים שלה בנתה חברת Date חברה יומן Date - מחלקה: day, month, year, ולה שלוש תכונות: תאריך. נוסף על כך, לצורך ניהול האירועים נבנתה המחלקה Event - אירוע. לחברה יש שלושה סוגי אירועים: פגישות (Meeting), שיחות טלפון (PhoneCall), ומשימה (Task). כדי לשמור את המידע על כל סוג אירוע, בנתה המחלקות המתאימות (התכונות של הפגישה - שם, פגישה, שיחות טלפון - בטבלה). נוסף על המחלקות האמורות, נבנתה המחלקה Diary - יומן, ולה תכונה נוספת arr בגודל 1,000 מטיפוס Event, השומרת עד 1,000 אירועים. התרשים (Diary מכילה Event; Meeting/PhoneCall/Task יורשות מ-Event) נתון בשאלון.

// תרשים חלקי (UML): Diary מכילה (composition, מעוין מלא) Event; Event הוא סוג-על (הכללה) של Meeting, PhoneCall, Task.
// נתון: כל שלושת סוגי האירוע (Meeting, PhoneCall, Task) זקוקים לשני שדות משותפים: date (Date) ו-hour (int, שעת ההתחלה).
// לפי עקרונות תכנות מונחה עצמים, שדות משותפים אלה שייכים למחלקת-העל Event (זו בדיוק המשמעות של "הוסף את התכונות" בסעיף א).
//
// Meeting (פגישה): arrNames - מערך שמות המשתתפים (מטיפוס String[], גודלו כמספר המשתתפים); duration - משך הפגישה בדקות; location - מקום הפגישה.
// PhoneCall (שיחת טלפון): phoneNumber - מספר הטלפון (String); name - שם האדם שאליו מתקשרים (String).
// Task (משימה): title - כותרת המשימה (String).
// Diary (יומן): arr - מערך בגודל 1,000 מטיפוס Event, השומר עד 1,000 אירועים.

תרשים UML: Diary מכילה (composition) Event; Meeting, PhoneCall, Task יורשות (generalization) מ-Event

Diary <>---- Event
                 ^
         +-------+-------+
       Meeting  PhoneCall  Task
סעיף א

העתק את התרשים למחברתך והוסף את המחלקה Date לתרשים. כתוב את כותרת המחלקה Event ואת התכונות שלה. הנח שבשאר התכונות הכתובות התואמות, ושבכל המחלקות יש פעולות בונות ופעולות get/set.

סעיף ב

כתוב במחלקה Diary פעולה ששמה allCalls (Java) / AllCalls (C#) המקבלת עם מטיפוס Date, ומחזירה מערך מטיפוס PhoneCall בגודל 100, המכיל את כל שיחות הטלפון בתאריך date. שים לב: נתונה (זמינה לשימוש בלי לממש) הפעולה same/Same במחלקה Date, המחזירה true אם התאריך הנוכחי זהה ל-other. הנח שיש בדיוק 100 שיחות טלפון בתאריך date, וכי בעת הקריאה לפעולה זו מערך האירועים arr במחלקה Diary מלא בעצמים (ללא null).

public PhoneCall[] allCalls (Date date)

סעיף ג

לפניך כותרת הפעולה הפנימית match (Java) / Match (C#) במחלקה Event: זימון הפעולה יחזיר true אם האירוע הוא פגישה (Meeting) שבה משתתף אדם ששמו זהה ל-name, או אם האירוע הוא שיחת טלפון (PhoneCall) עם אדם ששמו זהה ל-name, אחרת יחזיר false. ממש את הפעולה, והוסף פעולות למחלקות המתאימות כדי לבצע את הנדרש. ציין בעבור כל פעולה באיזו מחלקה היא נוספת. הערה: בסעיף זה, אין להשתמש בפעולה instanceof ובפעולות של המחלקה Object.

public boolean match (String name)

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

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

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

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