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

שתי מחלקות One ו-Two (Two extends One), כל אחת עם שני בנאים מועמסים ופעולות sum/setNum שנדרסות ב-Two. יש לעקוב אחרי הפעולה הראשית ולרשום את כל הפלט, כולל שורות ההדפסה שבתוך הבנאים עצמם.

public class One  {
    private int num1=0;
    private int num2=0;
    protected static int count =0;

    public One(int num)    {
        this.num1 = num;
        this.num2 = num;
        count++;
        Console.WriteLine ("One ctor1");
    }

    public One(int num1, int num2)    {
        this.num1 = num1;
        this.num2 = num2;
        count++;
        Console.WriteLine ("One ctor2");
    }

    public virtual int Sum()    {return this.num1+this.num2;}
    public virtual void SetNum(int num)    { this.num2 = num;}
    public static int GetCount()    { return count;    }
}// end of class One

public class Two :One  {
    private int num3 = 0;

    public Two(int num):base(num)  {
        this.num3 = num;
        Console.WriteLine ("Two ctor1");
    }

    public Two(int num1, int num2, int num3): base(num1, num2) {
        this.num3 = num3;
        Console.WriteLine ("Two ctor2");
    }

    public override int Sum()  {return base.Sum()+this.num3; }
    public override void SetNum(int num)   {this.num3 = num; }
    public static new int GetCount()  {return count;    }
}// end of class Two

public class Run  {
    public static void Main (string [] args)     {
            One f1 = new One(10);
            One f2 = new One (10, 20);
            Two s1 = new Two(1);
            One f3 = new Two(2);
(1)         Console.WriteLine ("count= " + One.GetCount());
            f2 = s1;
(2)         Console.WriteLine ("sum= " + f2.Sum());
            s1.SetNum(2);
(3)         Console.WriteLine ("sum= " + s1.Sum());
(4)         Console.WriteLine ("sum= " + f2.Sum());
            f2.SetNum(4);
(5)         Console.WriteLine ("sum= " + f2.Sum());
            f1.SetNum(4);
(6)         Console.WriteLine ("sum= " + f1.Sum());
(7)         Console.WriteLine ("count= " + Two.GetCount());
    }
}
סעיף א

מה הפלט המתקבל לאחר הפעלת השיטה main שבמחלקה Run? כתבו את מספר השורה ואז את הפלט המתקבל משורה זו. אם יש שגיאת קומפילציה, כתבו אותה.

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

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

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

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