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

A (num, getNum, f(A a) מדפיסה+משווה num==a.num*2). B יורשת מ-A ומוסיפה f(B b) (חתימה שונה — לא דריסה). C יורשת מ-A ודורסת f(A a) (בודקת instanceof C ושוויון num). Driver.main: y1(מוצהר A, בפועל B), y2(מוצהר B), z1(מוצהר A, בפועל C), z2(מוצהר C).

public class A {
    protected int num;
    public A(int n)
    {
        num = n;
    }
    public int getNum()
    {
        return num;
    }

    public boolean f(A a)
    {
        System.out.println("F in A");
        return num == a.num * 2;
    }
}// end of class A

public class B extends A {
    public B(int n)
    {
        super(n);
    }
    public boolean f(B b)
    {
        System.out.println("F in B");
        return num == b.num;
    }
}// end of class B

public class C extends A {
    public C (int n)
    {
        super(n);
        System.out.println("F in C");
    }
    public boolean f(A a)
    {
        return a instanceof C && num == a.num;
    }
} //end of class C

public class Driver
{
    public static void main(String[] args)
    {
        A y1 = new B(10);
        B y2 = new B(10);
        A z1 = new C(10);
        C z2 = new C(10);
        (****)
    }
}
סעיף א

האם קיימת דריסה (overriding) או העמסה (overloading) של הפעולות? הסבירו את תשובתכם.

סעיף ב

בכל אחד מהסעיפים הבאים השורה (****) תוחלף בשורת קוד משורות הקוד 1-6. כתבו עבור כל אחד מהסעיפים, אם הקוד תקין או לא. אם הקוד תקין, יש לציין מה יהיה הפלט; אם הקוד אינו תקין — יש להסביר למה הוא אינו תקין ולציין את סוג השגיאה (קומפילציה או זמן ריצה). שימו לב שאין קשר בין סעיפים!

  1. System.out.println(y1.getNum()==((B)z1).getNum());
  2. System.out.println(y1.f(y2));
  3. System.out.println(y2.f(y1));
  4. System.out.println(z1.f(z2));
  5. System.out.println(z1.f(y1));
  6. System.out.println(z2.f((C)y2)); (C#: אותן שש שורות, GetNum/F/Console.WriteLine בהתאמה.)
שאלות ותגובות על השאלה

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

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

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