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

E בסיס עם x; F יורשת מ-E ומוסיפה שדה סטטי count (משותף לכל עצמי F/G) ושני בנאים עמוסים; G יורשת מ-F, דורסת calc() (וקוראת ל-super.calc()) ומוסיפה squre(); H יורשת מ-E ישירות. סעיף א עוקב אחר 7 ההצהרות הראשונות ב-main/Main. בכל אחד מ-10 סעיפי ב מציבים שורה עצמאית אחת במקום ה-// *** וקובעים אם היא תקינה - ואם כן, מה הפלט.

public class E {
   protected int x;
   public E() {
     this.x = 5;
     System.out.println("E x = " + this.x);
   }
   public E(int x) {
     this.x = x;
   }
   public int calc() {
     return this.x;
   }
}
public class F extends E {
   private static int count = 0;
   public F() {
     super(8);
     count++;
   }
   public F(int x) {
     super(x);
     count++;
     System.out.println("F count = " + count);
   }
   public int calc() {
     return this.x + 10;
   }
}
public class G extends F {
   public G() {
     super(3);
     this.x = this.x * 2;
     System.out.println("G x = " + this.x);
   }
   public int calc() {
     return super.calc() + 1;
   }
   public int squre() {
     return this.x*this.x;
   }
}
public class H extends E {
   public H() {
     super();
     this.x = this.x + 5;
     System.out.println("H x = " + this.x);
   }
   public int calc() {
     return this.x/2;
   }
}
סעיף א

נתונה המחלקה Tester (קוד מלא, ראו code_context + main). הציגו את העצמים שנוצרו בפעולה main/Main (סוג העצם, סוג ההפניה וערכי התכונות), וכתבו את הפלט של הפעולה.

public class Tester { public static void main(String[] args) { E e1 = new E(); E e2 = new F(); F f1 = new G(); E e3 = new H(); E a = new G(); E b = new H(); F c = new G(); // *** } }

סעיף ב1

הציבו פקודה זו בפעולה main/Main במקום המצוין לעיל ב-// ***. כתבו במחברת האם הקוד המתקבל תקין או לא תקין. אם הקוד תקין – כתבו את הפלט. אם הקוד אינו תקין, הסבירו מדוע. שימו לב: אין קשר בין הפקודות; כל פקודה מוצבת בנפרד תוך שהמצב מ-א (e1,e2,f1,e3,a,b,c) נשמר. הפקודה: 1. F f = new E();

סעיף ב2

הציבו פקודה זו בפעולה main/Main במקום המצוין לעיל ב-// ***. כתבו במחברת האם הקוד המתקבל תקין או לא תקין. אם הקוד תקין – כתבו את הפלט. אם הקוד אינו תקין, הסבירו מדוע. שימו לב: אין קשר בין הפקודות; כל פקודה מוצבת בנפרד תוך שהמצב מ-א (e1,e2,f1,e3,a,b,c) נשמר. הפקודה: 2. G g = new F();

סעיף ב3

הציבו פקודה זו בפעולה main/Main במקום המצוין לעיל ב-// ***. כתבו במחברת האם הקוד המתקבל תקין או לא תקין. אם הקוד תקין – כתבו את הפלט. אם הקוד אינו תקין, הסבירו מדוע. שימו לב: אין קשר בין הפקודות; כל פקודה מוצבת בנפרד תוך שהמצב מ-א (e1,e2,f1,e3,a,b,c) נשמר. הפקודה: 3. F f2 = (F)a;

סעיף ב4

הציבו פקודה זו בפעולה main/Main במקום המצוין לעיל ב-// ***. כתבו במחברת האם הקוד המתקבל תקין או לא תקין. אם הקוד תקין – כתבו את הפלט. אם הקוד אינו תקין, הסבירו מדוע. שימו לב: אין קשר בין הפקודות; כל פקודה מוצבת בנפרד תוך שהמצב מ-א (e1,e2,f1,e3,a,b,c) נשמר. הפקודה: 4. G g2 = (G)c;

סעיף ב5

הציבו פקודה זו בפעולה main/Main במקום המצוין לעיל ב-// ***. כתבו במחברת האם הקוד המתקבל תקין או לא תקין. אם הקוד תקין – כתבו את הפלט. אם הקוד אינו תקין, הסבירו מדוע. שימו לב: אין קשר בין הפקודות; כל פקודה מוצבת בנפרד תוך שהמצב מ-א (e1,e2,f1,e3,a,b,c) נשמר. הפקודה: 5. F f3 = (F)b;

סעיף ב6

הציבו פקודה זו בפעולה main/Main במקום המצוין לעיל ב-// ***. כתבו במחברת האם הקוד המתקבל תקין או לא תקין. אם הקוד תקין – כתבו את הפלט. אם הקוד אינו תקין, הסבירו מדוע. שימו לב: אין קשר בין הפקודות; כל פקודה מוצבת בנפרד תוך שהמצב מ-א (e1,e2,f1,e3,a,b,c) נשמר. הפקודה: 6. System.out.println(((G)a).squre());

סעיף ב7

הציבו פקודה זו בפעולה main/Main במקום המצוין לעיל ב-// ***. כתבו במחברת האם הקוד המתקבל תקין או לא תקין. אם הקוד תקין – כתבו את הפלט. אם הקוד אינו תקין, הסבירו מדוע. שימו לב: אין קשר בין הפקודות; כל פקודה מוצבת בנפרד תוך שהמצב מ-א (e1,e2,f1,e3,a,b,c) נשמר. הפקודה: 7. System.out.println(a.squre());

סעיף ב8

הציבו פקודה זו בפעולה main/Main במקום המצוין לעיל ב-// ***. כתבו במחברת האם הקוד המתקבל תקין או לא תקין. אם הקוד תקין – כתבו את הפלט. אם הקוד אינו תקין, הסבירו מדוע. שימו לב: אין קשר בין הפקודות; כל פקודה מוצבת בנפרד תוך שהמצב מ-א (e1,e2,f1,e3,a,b,c) נשמר. הפקודה: 8. System.out.println(((H)b).calc());

סעיף ב9

הציבו פקודה זו בפעולה main/Main במקום המצוין לעיל ב-// ***. כתבו במחברת האם הקוד המתקבל תקין או לא תקין. אם הקוד תקין – כתבו את הפלט. אם הקוד אינו תקין, הסבירו מדוע. שימו לב: אין קשר בין הפקודות; כל פקודה מוצבת בנפרד תוך שהמצב מ-א (e1,e2,f1,e3,a,b,c) נשמר. הפקודה: 9. System.out.println(((G)b).squre());

סעיף ב10

הציבו פקודה זו בפעולה main/Main במקום המצוין לעיל ב-// ***. כתבו במחברת האם הקוד המתקבל תקין או לא תקין. אם הקוד תקין – כתבו את הפלט. אם הקוד אינו תקין, הסבירו מדוע. שימו לב: אין קשר בין הפקודות; כל פקודה מוצבת בנפרד תוך שהמצב מ-א (e1,e2,f1,e3,a,b,c) נשמר. הפקודה: 10. System.out.println(f1.squre());

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

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

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

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