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

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

public class One {
    protected int n1;
    public One ()
    {
        this.n1 = 1;
    }
    public One (int val)
    {
        this.n1 = val;
    }
    public void update(int k)
    {
        this.n1 = this.n1 * k;
    }
    public String toString()
    {
        return "One: n1=" + this.n1;
    }
}

public class Two extends One {
    protected int n2;
    public Two(int val)
    {
        this.n2 = val;
    }
    public Two (int val1,int val2)
    {
        super(val1);
        this.n2 = val2;
    }
    public void update(int k)
    {
        super.update(k);
        this.n2 = this.n2 * k;
    }
    public String toString()
    {
        return super.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++)
                  System.out.println(arr[i]);

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

    (**)      for (int i = 0; i < arr.length; i++)
                  System.out.println(arr[i]);
          }
}

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

סעיף ב

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

for(int i=0;i< arr.length;i++) {
    arr [i].update(i+3);
    System.out.println(arr[i]);
}

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

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

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

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

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