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

בפרויקט מסוים הוגדרו שלושה ממשקים ושתי מחלקות:

public interface Dancer{
    void LonelyDance();
    void CoupleDance(Dancer d);
}
public interface Singer  {    void Sing(); }
public interface Musician {   void Play(); }
public class Actor : Dancer, Singer, Musician
{
    private string name;
    private int age;
    …
}
public class Driver
{
    public static void Main(string[] args)
    {
        Actor actor1 = new Actor("Bob", 25);
        Actor actor2 = new Actor("Alice");
        ( *****)
    }
}
סעיף א

השלימו את המחלקה Actor: תכתבו כותרות של הפעולות החסרות בה (כותרות בלבד — אין דרישה למימוש).

סעיף ב

בכל אחד מסעיפים הבאים השורה (*****) תוחלף בשורת קוד משורות הקוד 1-6. כתבו, עבור כל אחד מהסעיפים, אם הקוד תקין או לא. אם הקוד אינו תקין — יש להסביר למה הוא אינו תקין ולציין את סוג השגיאה (קומפילציה או זמן ריצה). שימו לב שאין קשר בין סעיפים: (1) Dancer dancer1 = actor1; dancer1.coupleDance(actor2); (2) Singer singer2 = new Singer(); singer2.sing(); (3) Singer singer3 = new Actor("Clark",30); Dancer dancer3 = (Actor)singer3; (4) Singer actor4 = new Actor("Danny"); actor4.play(); (5) Dancer actor5 = new Actor("Eddie"); Singer singer5 = (Singer) actor5; singer5.sing(); (6) Musician musician6 = new Actor("Freddie", 45); ((Actor) musician6).lonelyDance(); ((Singer) musician6).sing();

סעיף ג

(אין קשר לסעיפים א' ו-ב') נתונה הפעולה main הבאה: public static void main(String[] args) { C c = new A(); B b1 = (B)(new A()); B b2 = new D(); A a = new D(); } עבור כל אחת מן האפשרויות 1-6, קבעו אם יחס ההורשה בין המחלקות מתאים לקוד של הפעולה main הנתונה (כלומר, שכל ארבע השורות מתקמפלות ורצות ללא שגיאה). הסבירו את תשובתכם.

  1. C יורשת מ-A, B יורשת מ-A, D יורשת מ-A.
  2. A יורשת מ-C, B יורשת מ-A, D יורשת מ-A.
  3. C יורשת מ-A, B יורשת מ-A, D יורשת מ-B.
  4. A יורשת מ-C, C יורשת מ-B, D יורשת מ-A.
  5. A יורשת מ-C, B יורשת מ-A, D יורשת מ-B.
  6. A יורשת מ-C, B יורשת מ-C, D יורשת מ-C.
שאלות ותגובות על השאלה

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

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

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