אתם מתרגלים שאלה מתוך בגרות מדעי המחשב — מבני נתונים (שאלון 899271)מבחן 2026 · קיץ מועד Special · שאלה 10כל שאלות המבחן ←
תכנות מונחה עצמיםמחלקות ואובייקטים

המחלקה BB כוללת a (private int) ו-b (protected int); CC יורשת מ-BB ומוסיפה c (private int) - בלי get/set. סעיף א נותן תרשים של 8 עצמים שנוצרו מ-8 קריאות בנאי שונות ומבקש לשחזר את גוף חמשת הבנאים. סעיף ב נותן פלט תקין + 2 שגיאות קומפילציה ומבקש לממש foo/goo כך שיתקבלו.

public class BB {
  private int a;
  protected int b;
  ****
}
public class CC extends BB {
  private int c;
  ****
}

public class Tester {
  public static void main(String[] args) {
    BB [] b = new BB[8];
    b[0] = new BB();
    b[1] = new BB(16);
    b[2] = new BB(b[0]);
    b[3] = new BB(b[1]);
    b[4] = new CC(9);
    b[5] = new CC(5);
    b[6] = new CC(b[0]);
    b[7] = new CC(b[1]);
  }
}

מצב האובייקטים b[0..7] לאחר הרצת Tester -- p-16.png / p-18.png

idx0 BB{a=10,b=1} idx1 BB{a=10,b=16} idx2 BB{a=10,b=1} idx3 BB{a=10,b=16} idx4 CC{a=10,b=9,c=7} idx5 CC{a=10,b=5,c=7} idx6 CC{a=10,b=1,c=19} idx7 CC{a=10,b=16,c=19}
סעיף א

לפניכם תרשים עצמים שנוצרו בעקבות הרצת קטע הקוד. מצב האובייקטים במערך b[0..7] לאחר ההרצה מפורט בטבלה שלהלן:

אינדקסמחלקהabc
b[0]BB101
b[1]BB1016
b[2]BB101
b[3]BB1016
b[4]CC1097
b[5]CC1057
b[6]CC10119
b[7]CC101619

כתבו במחלקות BB ו-CC את הפעולות הבונות הנדרשות כדי לקבל את העצמים שבטבלה. ציינו בעבור כל אחד מן העצמים שבטבלה את הפעולה הבונה על פיה הוא נוצר. הערה: אין להוסיף פעולות שאינן בונות במחלקות BB ו-CC. פתרון הכולל פעולות שאינן בונות לא יזוכה בנקודות.

סעיף ב

נתון קטע קוד תקין והפלט שהתקבל בעקבות הרצתו. כמו כן, נתון קטע קוד עבורו התקבלה שגיאת הידור (קומפילציה). ממשו את הפעולות goo ו-foo (Java) / Goo ו-Foo (C#) במחלקות המתאימות (BB ו-CC) על פי עקרונות תכנות מונחה עצמים, כך שיתקבל הפלט שלפניכם (יש לממש במחלקות רק את הפעולות הנחוצות כדי שהקוד ירוץ).

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

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

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

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