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

סעיף א': קטע קוד מופשט 'A x = new B(t, s); h.g(n, d);' שרץ ללא שגיאות — שישה היגדים כלליים לבדוק. סעיף ב' (אין קשר לסעיף א'): מחלקה A עם a1()/a2() (a2 קוראת ל-a1), מחלקה B יורשת מ-A ודורסת את a1 להדפיס "Bye B" — מה מדפיסה a2 על עצם B?

public class A {
    protected void a1() {
        System.out.println("Hello A");
    }
    protected void a2() {
        a1();
    }
}

public class B extends A {
    protected void a1() {
        System.out.println("Bye B");
    }
}
סעיף א

נתון קטע קוד שרץ ללא שגיאות: A x = new B(t, s); h.g(n, d); עבור כל אחד מההיגדים 1-6 ציינו האם הוא נכון או אינו נכון. הסבירו את תשובתכם.

  1. הפעולה g חייבת להיות ציבורית (public).
  2. t הוא בהכרח משתנה מטיפוס פשוט (כמו: int, double וכד').
  3. h הוא בהכרח אובייקט.
  4. d יכול להיות שם של פעולה.
  5. B היא בהכרח מחלקה שיורשת מ-A (גם אם לא ישירות).
  6. ייתכן ש-A היא מחלקה שיורשת מ-B.
סעיף ב

(אין קשר לסעיף א') נתונה המחלקה A הבאה (a1 מדפיסה "Hello A"; a2 קוראת ל-a1). בקובץ נפרד, הגדירו מחלקה נוספת B שיורשת מהמחלקה A. במחלקה B ביצעו דריסה לפעולה a1 והיא מדפיסה "Bye B". מה יקרה אם נפעיל על אובייקט מסוג B את הפעולה a2?

  1. הפלט יהיה: Hello A
  2. הפלט יהיה: Bye B
  3. הפלט יהיה: Hello A / Bye B
  4. הפלט יהיה: Bye B / Hello A
שאלות ותגובות על השאלה

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

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

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