אתם מתרגלים שאלה מתוך מה"ט מבני נתונים ותכנות מונחה עצמים — הנדסאי תוכנהמבחן 2021 · קיץ מועד ב · שאלה 7כל שאלות המבחן ←
תכנות מונחה עצמיםפולימורפיזם ומחלקות מופשטות

שבעה תרגילי-הטלה בלתי-תלויים על אותה הכנה קבועה — כל אחד בודק בנפרד את ההבחנה בין 'מתקמפל' (יחס תת-טיפוס כלשהו קיים בין המוצהר ליעד) ל'מצליח בזמן ריצה' (הטיפוס האמיתי של העצם תואם ליעד).

Mammal mam = new Bulldog();
Dog dog = new Beagle();
Bulldog bul = new Bulldog();

עץ הירושה: Mammal (שורש) ← Dog, Cat; Dog ← Bulldog, Beagle; Cat ← Bengal. method()/Method() מוגדרת ב-Dog.

Mammal
├── Dog  [method()/Method()]
│     ├── Bulldog
│     └── Beagle
└── Cat
      └── Bengal
סעיף א

קבעו מה יקרה עבור ההוראה הבאה (בנפרד, לאחר קטע הקוד הנתון): Cat d1 = (Cat)mam; — תקין? שגיאת קומפילציה? שגיאת זמן ריצה?

סעיף ב

קבעו מה יקרה עבור ההוראה הבאה (בנפרד, לאחר קטע הקוד הנתון): Cat d2 = (Cat)((Mammal)mam); — תקין? שגיאת קומפילציה? שגיאת זמן ריצה?

סעיף ג

קבעו מה יקרה עבור ההוראה הבאה (בנפרד, לאחר קטע הקוד הנתון): Mammal d3 = (Cat)new Bengal(); — תקין? שגיאת קומפילציה? שגיאת זמן ריצה?

סעיף ד

קבעו מה יקרה עבור ההוראה הבאה (בנפרד, לאחר קטע הקוד הנתון): Dog d4 = (Mammal)dog; — תקין? שגיאת קומפילציה? שגיאת זמן ריצה?

סעיף ה

קבעו מה יקרה עבור ההוראה הבאה (בנפרד, לאחר קטע הקוד הנתון): Beagle d5 = (Mammal)new Dog(); — תקין? שגיאת קומפילציה? שגיאת זמן ריצה?

סעיף ו

קבעו מה יקרה עבור ההוראה הבאה (בנפרד, לאחר קטע הקוד הנתון): object d6 = (Bengal)new Cat(); — תקין? שגיאת קומפילציה? שגיאת זמן ריצה?

סעיף ז

קבעו מה יקרה עבור ההוראה הבאה (בנפרד, לאחר קטע הקוד הנתון): ((Bulldog)((Mammal)bul)).Method(); — תקין? שגיאת קומפילציה? שגיאת זמן ריצה?

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

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

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

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