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

csharp

public class Father {

public Father(){
}
public virtual void Smile() {
    Console.WriteLine("Father is smiling");
}
public virtual void Run() {
    Console.WriteLine("Father is running");
}

}

public class Son :Father {

public Son(): base(){
}
public override void Smile() {
    Console.WriteLine("Son is smiling");
}
public override void Run() {
    Console.WriteLine("Son is running");
}
public virtual void Work() {
    Console.WriteLine("Son is working");
}

}

public class GrandSon :Son {

public GrandSon():base() {
}
public override void Smile() {
    Console.WriteLine("GrandSon is smiling");
}
public override void Run() {
    Console.WriteLine("GrandSon is running");
}
public void Play() {
    Console.WriteLine("GrandSon is playing");
}

}

סעיף א

עבור כל אחד משלושת קטעי הקוד הבאים, רשמו אם הוא תקין או לא. אם הקוד תקין – ציינו מה יהיה הפלט, אם הקוד אינו תקין – הסבירו מהו סוג השגיאה (שגיאת קומפילציה או שגיאת זמן ריצה).

  1. Father f = (Son)(new GrandSon());
  2. Object o = new Son(); Father f = o;
  3. Father f = new Father(); Object o = f; GrandSon gs = (GrandSon)o;
סעיף ב

עבור כל אחד מחמשת קטעי הקוד הבאים רשמו אם הוא תקין או לא. אם הקוד תקין – ציינו מה יהיה הפלט, אם הקוד אינו תקין – הסבירו מהו סוג השגיאה (שגיאת קומפילציה או שגיאת זמן ריצה).

  1. Son s = new Father(); s.Smile();
  2. Father f = new Son(); f.Smile();
  3. Father f = new Son(); f.Work();
  4. Son s = new GrandSon(); s.Play();
  5. Father f = new GrandSon(); f.Smile();
סעיף ג

עקבו אחרי קטע קוד הבא ורשמו מה יהיה הפלט. Father[] f = new Father[3]; f[0] = new Father(); f[1] = new Son(); f[2] = new GrandSon(); for (int i = 0; i < f.Length; i++) if (f[i] is Son) ((Son)f[i]).Run();

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

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

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

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