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

נתונות שלוש המחלקות הבאות:

public class One {
    protected int n1;
    public One ()
    {
        this.n1 = 1;
    }
    public One (int val)
    {
        this.n1 = val;
    }
    public virtual void Update(int k)
    {
        this.n1 = this.n1 * k;
    }
    public override string ToString()
    {
        return "One: n1=" + this.n1;
    }
}

public class Two : One {
    protected int n2;
     public Two(int val):base()
     {
         this.n2 = val;
     }
     public Two (int val1,int val2):base(val1)
     {
         this.n2 = val2;
     }
     public override void Update(int k)
     {
         base.Update(k);
         this.n2 = this.n2 * k;
     }
     public override string ToString()
     {
         return base.ToString() + " Two: n2=" + this.n2;
     }
}
סעיף א

נתונה גם המחלקה Test:

public class Test {
    public   static void Main(string[] args){
        One[] arr = new One [6];
        arr [0] = new One (2);
        arr [1] = new Two(4);
        arr [2] = new Two(3, 6);
        arr [3] = arr [0];
        arr [4] = new Two(4);
        arr [5] = arr[1];

              for (int i = 0; i < arr.Length; i++)
                  Console.WriteLine(arr[i]);

    (*)       for(int i=0;i< arr.Length;i++)
                  arr [i].Update(i+3);

    (**)      for (int i = 0; i < arr.Length; i++)
                  Console.WriteLine (arr[i]);
          }
}

עקבו אחרי ביצוע פעולה הראשית (Main) של המחלקה Test, ורשמו מה יהיה הפלט של הפעולה הראשית. חובה להציג עבור כל עצם שנוצר בפעולה את ערכי התכונות שלו.

סעיף ב

שתי הלולאות (*) ו-(**) הוחלפו ללולאה הבאה:

for(int i=0;i< arr.Length;i++) {
    arr [i].Update(i+3);
    Console.WriteLine(arr[i]);
}

האם פלט של הפעולה הראשית השתנה? הסבירו את תשובתכם.

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

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

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

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