בי מאסטר (Bmaster)מאגר שאלות בגרותשאלות נפוצותמדריכיםארכיון בגרויות
תפריט

חומרי לימוד

מאגר שאלות בגרותשאלות נפוצותמדריכיםארכיון בגרויות
חזרה למאגר2018 קיץ מועד א

ניתוח היררכית ירושה ופולימורפיזם

שאלה קודמתשאלה הבאה
שאלה 13מבני נתונים2018 קיץ מועד א

ניתוח היררכית ירושה ופולימורפיזם

לפניך פרויקט שהוגדרו בו המחלקות A, B, C, D, E. בפרויקט מומשה פעולה f() בשתי מחלקות. קטע הקוד הבא תקין:

java
1A a1 = new A();
2A e1 = new E();
3E c1 = new C();
4C b1 = new B();
5C d1 = new D();

נתון:

  • ההוראה B b2 = new D(); גורמת לשגיאת הידור.
  • ההוראה a1.f(); גורמת לשגיאת הידור.
  • ההוראה ((E)b1).f(); תקינה ומדפיסה "bye-bye".
  • ההוראה ((B)d1).f(); תקינה ומדפיסה "hello".
  • ההוראה ((D)b1).f(); גורמת לשגיאת זמן ריצה.

משימות

אמשימה אtext

רשמו את עץ הירושה של כל המחלקות: לכל מחלקה ציינו מי מחלקת־האב שלה (אם קיימת), וציינו באילו שתי מחלקות מומשה הפעולה f().

במשימה בtext

נתונה המחלקה Z:

java
1public class Z {
2    public void g(){}
3}

(1) הוסף את המחלקה Z לעץ הירושה שציירת בסעיף א כך שההוראה Z x = new A(); תהיה תקינה. (2) קטע הקוד שלפניך תקין:

java
1A a2 = new A();
2Z z1 = new Z();
3Z a3 = new A();

לכל אחת מן ההוראות i-v, ציין אם היא תקינה או אינה תקינה. נמק. i. a2 = z1; ii. a3 = z1; iii. ((A)z1).g(); iv. a2.g(); v. ((A)a3).g();

גמשימה גtext

נתונה המחלקה Y:

java
1public class Y {
2    public void m(){}
3}

(1) הוסף את המחלקה Y לעץ הירושה שציירת בסעיף א כך שההוראה C f = new Y(); תהיה תקינה. (2) קטע הקוד שלפניך תקין:

java
1A a2 = new A();
2Y y1 = new Y();
3C y2 = new Y();

עבור כל אחת מן ההוראות i-v, ציין אם היא תקינה או אינה תקינה. נמק. i. a2 = y1; ii. y2 = y1; iii. ((A)y1).m(); iv. y2.m(); v. ((A)y2).m();

שאלה 13מבני נתונים2018 קיץ מועד א

ניתוח היררכית ירושה ופולימורפיזם

לפניך פרויקט שהוגדרו בו המחלקות A, B, C, D, E. בפרויקט מומשה פעולה f() בשתי מחלקות. קטע הקוד הבא תקין:

java
1A a1 = new A();
2A e1 = new E();
3E c1 = new C();
4C b1 = new B();
5C d1 = new D();

נתון:

  • ההוראה B b2 = new D(); גורמת לשגיאת הידור.
  • ההוראה a1.f(); גורמת לשגיאת הידור.
  • ההוראה ((E)b1).f(); תקינה ומדפיסה "bye-bye".
  • ההוראה ((B)d1).f(); תקינה ומדפיסה "hello".
  • ההוראה ((D)b1).f(); גורמת לשגיאת זמן ריצה.

משימות

אמשימה אtext

רשמו את עץ הירושה של כל המחלקות: לכל מחלקה ציינו מי מחלקת־האב שלה (אם קיימת), וציינו באילו שתי מחלקות מומשה הפעולה f().

במשימה בtext

נתונה המחלקה Z:

java
1public class Z {
2    public void g(){}
3}

(1) הוסף את המחלקה Z לעץ הירושה שציירת בסעיף א כך שההוראה Z x = new A(); תהיה תקינה. (2) קטע הקוד שלפניך תקין:

java
1A a2 = new A();
2Z z1 = new Z();
3Z a3 = new A();

לכל אחת מן ההוראות i-v, ציין אם היא תקינה או אינה תקינה. נמק. i. a2 = z1; ii. a3 = z1; iii. ((A)z1).g(); iv. a2.g(); v. ((A)a3).g();

גמשימה גtext

נתונה המחלקה Y:

java
1public class Y {
2    public void m(){}
3}

(1) הוסף את המחלקה Y לעץ הירושה שציירת בסעיף א כך שההוראה C f = new Y(); תהיה תקינה. (2) קטע הקוד שלפניך תקין:

java
1A a2 = new A();
2Y y1 = new Y();
3C y2 = new Y();

עבור כל אחת מן ההוראות i-v, ציין אם היא תקינה או אינה תקינה. נמק. i. a2 = y1; ii. y2 = y1; iii. ((A)y1).m(); iv. y2.m(); v. ((A)y2).m();