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

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

public class A {
    public static int countA = 0;
    private string st;
    public A() { this.st = "aaa"; countA++;}
    public A(string st) { this.st = st; countA++;}
    public override string ToString() { return this.st; }
    public virtual bool Same (Object obj) {
        if ((obj is A) && (((A)obj).st.Equals(this.st)))
            return true;
        return false;
    }
}
//end of class A

public class B : A {
    public static int countB = 0;
    private int num;
    public B(): base() {
        this.num = 1;
        countB++;
    }
    public B(int num): base() {
        this.num = num;
        countB++;
    }
    public B(int num, string st): base(st) {
        this.num = Math.Abs(num);
        countB++;
    }
    public override string ToString() {
        string s = this.num +"/";
        for(int i = 0; i< this.num; i++)
            s+= base.ToString();
        return s;
    }
    public override bool Same (Object obj) {
        if ((obj is B) && (((B)obj).num == this.num))
            return true;
        return false;
    }
} //end of class B
סעיף א

לפניכם קטע קוד מהתוכנית הראשית: A a = new A(); B b = new B(); if (a.Same(b)) Console.WriteLine(a); else Console.WriteLine(b); if (b.Same(a)) Console.WriteLine(b); else Console.WriteLine(a); מה יהיה הפלט של קטע התוכנית? הסבירו את תשובתכם.

סעיף ב

נתונה המחלקה Tester הבאה: public class Tester { public static void Print (Object[] arr) { for (int i = 0; i < arr.Length; i++) { if (arr[i] != null) { if (arr[i] is B) Console.WriteLine("B: " + arr[i]); else if (arr[i] is A) Console.WriteLine("A: " + arr[i]); else Console.WriteLine("Unknown"); } else Console.WriteLine("NULL"); } } public static void Main (string[] args) { A[] ar1 = new A[7]; ar1[0] = new B(-4); ar1[1] = new A("bbb"); ar1[2] = new B(3,"ccc"); ar1[3] = new B(); ar1[4] = new B(2, "ddd"); ar1[5] = new A(); Print(ar1); Console.WriteLine(A.countA+ " "+ B.countB); } } //end of class Tester עקבו אחרי ביצוע תוכנית הראשית (Main) ורשמו מה יהיה פלט התוכנית. יש להציג את התכונות של כל העצמים שנוצרו במהלך ביצוע התוכנית.

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

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

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

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