בפרויקט מוגדרות שש מחלקות: A, B, C, D, E ו-Test. כל אחת בקובץ נפרד.
להלן מתוארות המחלקות עם החתימות של הפעולות שיש בהן. המימוש עצמו אינו חשוב. שימו לב שלצד כל פעולה כתוב בהערה מספר. זהו מספר הפעולה Func שאליו מתייחסים בהמשך.
public class A
{
protected int x;
protected int y;
public A() {
x = 0;
y = 1;
}
public A(int a) : this(a, a){
}
public A(int a, int b){
y = a * b;
}
public virtual void Func(D d){ } // 1
public virtual void Func(B b){ } // 2
} //end of class A
public class B : A
{
protected int z;
public B(int b) : base(b + 1){
x = b;
z = b * 2;
}
public virtual void Func(A a){ } // 3
public override void Func(B b){ } // 4
} //end of class B
public class C : A
{
protected int t;
public virtual void Func(A a){ } // 5
public override void Func(B b){ } // 6
} //end of class C
public class D : B
{
public D(int d): base(d+2){
}
public override void Func(A a) { } //7
public override void Func(B b) { } //8
} //end of class D
public class E : C
{
protected int w;
public E(int num):base(){
x = num;
w = x + y;
}
public override void Func(A a){ } // 9
} //end of class E
public class Test {
public static void main (string []args)
{
A ab =new B(2);
A ae =new E(3);
B bd =new D(2);
C cc =new C();
D dd =new D(4);
// ****** //
}
} //end of class Test
(א)שרטטו את עץ הירושה למחלקות המוגדרות בפרויקט.
(ב)לפניכם טבלה ובה כל האובייקטים שהוגדרו בשיטה main במחלקה Test לעיל. כל אובייקט בשורה נפרדת. בעמודות של הטבלה רשומים השמות של התכונות שיש במחלקות שמהן נוצרו האובייקטים.
עליכם למלא את הטבלה ולכתוב בכל תא מהו הערך של התכונה שבעמודה באובייקט שבשורה. שימו לב שלא תמיד כל התאים יתמלאו. בתא שלא קיימת התכונה במחלקה, כתבו "אין".
להדגמה, מילאנו את הערכים המתאימים בחלק מהתאים. עליכם להשלים את כל שאר התאים ולהעתיק את הטבלה המלאה לחוברת הבחינה.
| אובייקט | x | y | z | t | w |
|---|---|---|---|---|---|
| `A ab = new B(2);` | 2 | 9 | 4 | אין | אין |
| `A ae = new E(3);` | 3 | 0 | | | |
| `B bd = new D(2);` | | | | | |
| `C cc = new C();` | | | | 0 | |
| `D dd = new D(4);` | | | | | 49 |
> ⚠️ מיפוי התאים המדויק לעמודות/שורות שוחזר best-effort מהטקסט הליניארי של הטבלה (עמ' 12 C# / עמ' 24 Java) — יש לאמת מול עמוד המקור.
עליכם למלא את הטבלה ולכתוב בכל תא מהו הערך של התכונה שבעמודה באובייקט שבשורה. שימו לב שלא תמיד כל התאים יתמלאו. בתא שלא קיימת התכונה במחלקה, כתבו "אין".
להדגמה, מילאנו את הערכים המתאימים בחלק מהתאים. עליכם להשלים את כל שאר התאים ולהעתיק את הטבלה המלאה לחוברת הבחינה.
| אובייקט | x | y | z | t | w |
|---|---|---|---|---|---|
| `A ab = new B(2);` | 2 | 9 | 4 | אין | אין |
| `A ae = new E(3);` | 3 | 0 | | | |
| `B bd = new D(2);` | | | | | |
| `C cc = new C();` | | | | 0 | |
| `D dd = new D(4);` | | | | | 49 |
> ⚠️ מיפוי התאים המדויק לעמודות/שורות שוחזר best-effort מהטקסט הליניארי של הטבלה (עמ' 12 C# / עמ' 24 Java) — יש לאמת מול עמוד המקור.
(ג)בכל אחד מסעיפים הבאים השורה (*) תוחלף בשורת קוד משורות הקוד 1–8. כתבו, עבור כל אחד מהסעיפים, אם הקוד תקין או לא. אם הקוד אינו תקין – יש להסביר למה הוא אינו תקין ולציין את סוג השגיאה (קומפילציה או זמן ריצה). אם הקוד תקין, כתבו מהו מספר הפעולה Func שתופעל.
שימו לב שאין קשר בין סעיפים!
1. `ab.Func(bd);`
2. `((E)ae).Func (ab);`
3. `((B)dd).Func (bd);`
4. `((A)bd).Func (ae);`
5. `((E)cc).Func (bd);`
6. `bd.Func(ae);`
7. `cc.Func(cc);`
8. `((D)ab).Func(dd);`
שימו לב שאין קשר בין סעיפים!
1. `ab.Func(bd);`
2. `((E)ae).Func (ab);`
3. `((B)dd).Func (bd);`
4. `((A)bd).Func (ae);`
5. `((E)cc).Func (bd);`
6. `bd.Func(ae);`
7. `cc.Func(cc);`
8. `((D)ab).Func(dd);`
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה בטיחות
שאלו כאן — ותקבלו מענה מוסמך.
רוצים לתרגל אלפי שאלות נוספות?
המשיכו לתרגול מלא עם משוב אישי ←מבחני מה"ט אמיתיים · משוב מיידי · וידאו לכל נושא · מעקב התקדמות