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

csharp

class Basis { protected int num1; public Basis() { } public Basis(int n) { this.num1 = n; } public virtual void Print() { Console.WriteLine(this.num1); } } class SingleOne : Basis { protected int num2; public SingleOne(int n1, int n2) : base(n1) { this.num2 = n2; } public override void Print() { base.Print(); Console.WriteLine(this.num2); } } class MultiOne : Basis { private int count = 0; private Basis[] arr; public MultiOne() { this.arr = new Basis[5]; } public override void Print() { for (int i = 0; i < count; i++) arr[i].Print(); } public void Add(Basis b) { if (count < arr.Length) { arr[count] = b; count++; } } }

סעיף א

ציירו תרשים UML שמייצג את הקשרים בין המחלקות Basis, SingleOne, MultiOne. יש לסמן ירושה באמצעות החץ והכלה באמצעות היהלום.

סעיף ב

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

class Test {
    public static void Main(string[] args) {
        MultiOne container = new MultiOne();
        SingleOne s1 = new SingleOne(11, 35);
        container.Add(s1);
        s1 = new SingleOne(47, 22);
        container.Add(s1);
        s1 = new SingleOne(8, 17);
        container.Add(s1);
        MultiOne subContainer = new MultiOne();
        s1 = new SingleOne(53, 40);
        subContainer.Add(s1);
        s1 = new SingleOne(21, 13);
        subContainer.Add(s1);
        s1 = new SingleOne(39, 62);
        subContainer.Add(s1);
        container.Add(subContainer);
        container.Print();
    }
}
שאלות ותגובות על השאלה

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

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

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