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

One: תכונה מוגנת x, f(x) מוסיפה ל-x, toString="x="+x. Two יורשת מ-One, דורסת f כך שהיא מחסירה ואז קוראת super.f (מוסיפה) — נטו ללא שינוי בקריאה בודדת. arr[5]=arr[1] יוצר alias (לא עצם חדש).

public class One {
    protected int x;
    public One(){ this.x = 1; }
    public One(int x) { this.x = x; }
    public void f(int x) { this.x += x; }
    public String toString() { return "x=" + this.x; }
} // end of One

public class Two extends One {
    public Two() { super(3); }
    public Two(int x) { super.f(x); f(x); }
    public void f(int x) { this.x -= x; super.f(x); }
} // end of Two

public class Tester {
    public static void print(One[] arr) {
        for (int i=0; i < arr.length; i++)
            System.out.println(i+" "+arr[i]);
    }
    public static void doF(One[] arr, int num) {
        for (int i=0; i < arr.length; i++)
            arr[i].f(num);
    }
    public static void what(One[] arr) {
        int k=0;
        for (int i = 0; i < arr.length; i++)
            if (arr[i] instanceof Two) k++;
        k = arr.length - k;
        System.out.println("k = "+ k);
    }
    public static void main(String[] args) {
        One[] arr = new One[6];
        arr[0]= new One();
        arr[1]= new One(3);
        arr[2] = new Two();
        arr[3] = new Two(2);
        arr[4] = new Two(5);
        arr[5] = arr[1];
        print(arr);
        doF(arr, 2);
        print(arr);
        what(arr);
    }
}
סעיף א

עקבו אחרי ביצוע הפעולה הראשית ורשמו מה יהיה הפלט של הפעולה. יש להציג את כל העצמים שנוצרו ואת השינויים בערכי התכונות שלהם במהלך הביצוע.

סעיף ב

מה מבצעת הפעולה what/What?

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

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

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

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