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

csharp

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

public int GetNum()
{
    return num;
}

public virtual bool F(A a)
{
    Console.WriteLine("F in A");
    return num == a.num * 2;
}

}// end of class A

public class B : A { public B(int n): base(n) { }

public bool F(B b)
{
  Console.WriteLine("F in B");
    return num == b.num;
}

}// end of class B

public class C : A { public C (int n): base(n) { }

public override bool F(A a)
{
  Console.WriteLine("F in C");
    return a is C && num == ((C)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. Console.WriteLine(y1.GetNum()==((B)z1).GetNum());
  2. Console.WriteLine(y1.F(y2));
  3. Console.WriteLine(y2.F(y1));
  4. Console.WriteLine(z1.F(z2));
  5. Console.WriteLine(z1.F(y1));
  6. Console.WriteLine(z2.F((C)y2));
שאלות ותגובות על השאלה

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

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

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