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

לפניכם שלושה סעיפים א–ג, שאין קשר ביניהם. ענו על שלושת הסעיפים.

סעיף א - לפניכם המחלקה Father ללא מימוש הפעולות הבונות, והמחלקה Son ללא מימוש הפעולות הבונות ופעולת toString:

לפניכם קטע קוד והפלט שהתקבל בעקבות הרצת קטע הקוד:

קודפלט
Father x1 = new Father(); System.out.println(x1); //1st=1, num=9 //1
Father x2 = new Father(3); System.out.println(x2); //2st=1, num=3 //2
Father x3 = new Son(5,'A'); System.out.println(x3); //3st=2, num=5, ch=A //3
Father x4 = new Son(7); System.out.println(x4); //4st=2, num=7, ch=Z //4

אין להוסיף פעולות נוספות למחלקות. תשובה הכוללת פעולות נוספות במחלקות, לא תזוכה בנקודות.

סעיף ב - נתונות המחלקות A, B, C, D והפעולה main במחלקה Tester, שרצה באופן תקין:

לפניכם שישה תרשימי היררכייה 1–6 (החץ מסמן יחס ירושה):

(X <- Y פירושו: Y יורשת מ-X. למשל בתרשים 4: C יורשת מ-A, B יורשת מ-C, D יורשת מ-B - שרשרת אחת).

בסוף הפעולה main נוספו שורות הקוד שלהלן, שרצות באופן תקין:

סעיף ג - נתונה המחלקה BBB, היורשת ממחלקה AAA:

כתבו במחלקה AAA את תכונות המחלקה (כולל הרשאות הגישה) ואת הכותרות של הפעולות הנדרשות כדי שהמחלקה BBB תהיה תקינה, בהתאם לעקרונות תכנות מונחה עצמים. אין צורך לממש את הפעולות שאת הכותרות שלהן הוספתם במחלקה AAA. אין לשנות את הקוד של המחלקה BBB.

public class Father {
    private static int st = 0;
    protected int num;
    public Father () {...}
    public Father (int num) {...}
    public String toString() {return "st=" + st + ", num=" + num;}
}

public class Son extends Father {
    private char ch;
    public Son (int num, char ch){...}
    public Son (int num) {...}
    public String toString() {... }
}

תיאור מילולי של ששת תרשימי ההיררכיה שבשאלון (החץ מסמן יחס ירושה, מהבן אל האב):

6: A<-C<-D<-B
5: B<-A<-C<-D
4: A<-C<-B<-D
3: D<-{B,C}<-A (D בראש, B ו-C יורשים מ-D, A יורש מ-C)
2: A<-C<-{B,D}
1: C<-B<-{D,A}

תרשימי ההיררכיה 1–6 כפי שמודפסים בשאלון

סעיף א

לפניכם המחלקה Father ללא מימוש הפעולות הבונות, והמחלקה Son ללא מימוש הפעולות הבונות ופעולות toString. לפניכם קטע קוד והפלט שהתקבל בעקבות הרצת קטע הקוד. ממשו את הפעולות הבונות במחלקה Father ובמחלקה Son, ואת הפעולה toString במחלקה Son, בהתאם לעקרונות תכנות מונחה עצמים, כך שיתקבל הפלט הנתון.

סעיף ב(1)

נתונות המחלקות A,B,C,D והפעולה main במחלקה Tester, שרצה באופן תקין. לפניכם שישה תרשימי היררכייה 1-6 (החץ מסמן יחס ירושה). בנוגע לכל אחד מהם, ציינו אם ייתכן או לא ייתכן או לא ייתכן שהוא מתאר את היחס ההיררכייה בין המחלקות A,B,C,D. אם ציינתם שלא ייתכן, נמקו מדוע.

סעיף ב(2)

בסוף הפעולה main נוספו שורות הקוד שלהלן, שרצות באופן תקין: A a3 = new B(); D d1 = (D)a3; בעקבות זאת, האם תשתנה תשובתכם בתת-סעיף ב(1)? נמקו את תשובתכם.

סעיף ג

נתונה המחלקה BBB, היורשת ממחלקה AAA: [public class BBB extends AAA { private char ch; public BBB (int num, char ch) { super (num); this.ch = ch; } public BBB (char ch) {this.ch = ch;} public int gg (int val) {return super.gg(val) + num;} public int mm () {return AAA.c + 2;} public boolean nn () {return this.mm (10);} }]. כתבו במחלקה AAA את תכונות המחלקה (כולל הרשאות הגישה) ואת הכותרות של הפעולות הנדרשות כדי שהמחלקה BBB תהיה תקינה, בהתאם לעקרונות תכנות מונחה עצמים. אין צורך לממש את הפעולות שאת כותרתם הוספתם במחלקה AAA. אין לשנות את הקוד של המחלקה BBB.

public class AAA { ... }

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

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

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

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