נתונה היררכיית המחלקות הבאה, הכוללת שלוש מחלקות: Kid, Student, Worker ושלושה ממשקים: ICanRead, ICanWrite, ICanSpeak.
תרשים ההיררכיה:
- הממשק ICanWrite:
void Write() - הממשק ICanRead:
void Read() - הממשק ICanSpeak:
void Speak() - המחלקה Kid:
void Speak(),void Eat()— מממשת את ICanSpeak. - המחלקה Worker:
void Read(),void Speak()— מממשת את ICanRead ואת ICanSpeak. - המחלקה Student:
void Write(),void Read(),void Sleep()— יורשת מ-Kid, ומממשת את ICanWrite ואת ICanRead.
(בתרשים: חץ רציף – ירושה, חץ מקווקו – מימוש ממשק.)
בכל מחלקה מוגדרת פעולה בונה ללא פרמטרים.
סעיף א
לכל אחת מהמחלקות Kid, Student, Worker כתבו את כותרת המחלקה.
סעיף ב
השלימו את שלוש השורות (1)-(3) כך שקטע קוד שלפניכם יעבור בלי שגיאות קומפילציה וזמן ריצה: _(1) x = new Worker(); _(2) y = new Kid(); _(3) z = new Student(); x = y; y = new Student(); y.Eat(); z.Read(); ((Student)z).Speak(); ((Kid)z).Eat(); z = new Worker();
סעיף ג
כתבו פעולה המקבלת כפרמטר מערך מטיפוס ICanSpeak. הפעולה תעבור על איברי המערך ותקרא לפעולה write(), אם היא קיימת בעבור העצם. אם הפעולה write() אינה קיימת – תיקרא הפעולה speak().
public static void WriteOrSpeak(ICanSpeak[] arr)
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.