אתם מתרגלים שאלה מתוך מה"ט מבני נתונים ותכנות מונחה עצמים — הנדסאי תוכנהמבחן 2022 · אביב מועד ב · שאלה 5כל שאלות המבחן ←
תכנות מונחה עצמים›ממשקים

נתונה היררכיית המחלקות הבאה הכוללת שלוש מחלקות Kid, Student, Worker ושלושה ממשקים ICanRead, ICanWrite, ICanSpeak:

תרשים ה-UML (חץ מלא = ירושה, חץ מקווקו = מימוש ממשק):

  • 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.
ICanWrite{write()}    ICanRead{read()}    ICanSpeak{speak()}

Kid{speak(),eat()}                ┄┄▷ ICanSpeak
Worker{read(),speak()}            ┄┄▷ ICanRead, ICanSpeak
Student{write(),read(),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)

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

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

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

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