נתונות המחלקות A ו-B:
public class A {
public static int countA = 0;
private int myVal;
protected string myString;
public A() { myVal = 1; myString = "BAD"; }
public A(int val) { myVal = val; myString = "GOOD!"; }
public int Func() { return 1; }
}
public class B : A {
private double x;
public bool GoodCode() { return x > 15.0; }
}
לפניכם חמישה היגדים. קבעו לכל אחד מהם אם הוא נכון או אינו נכון ונמקו את קביעתכם:
- המחלקה B לא תעבור קומפילציה כי אין לה אף בנאי.
- המחלקה A יורשת את הפעולה GoodCode מהמחלקה B.
- המחלקה B יורשת את כל התכונות ואת כל הפעולות של המחלקה A.
- המחלקה B יכולה לגשת ישירות לתכונות של המחלקה A.
- המחלקה A יכולה לגשת לתכונה x של המחלקה B.
כתבו במחלקה B פעולה בונה שמקבלת כפרמטר מספר שלם ומספר ממשי ומאתחלת את התכונות בהתאם.
public B(int val, double x)
הפעולה הבונה B(int val, double x) היא הפעולה שכתבתם, המאתחלת את התכונות בהתאם.
לפניכם שתי הוראות מהתוכנית הראשית:
A one = new B(127, 1.4);
A two = new A(613);
בעבור כל אחת מההוראות שלפניכם קבעו אם היא תקינה או אינה תקינה. אם ההוראה אינה תקינה, נמקו את קביעתכם וציינו אם זו שגיאת ריצה או שגיאת הידור (קומפילציה).
bool myBool = one.GoodCode();bool myBool = two.GoodCode();bool myBool = ((B)one).GoodCode();bool myBool = ((B)two).GoodCode();
בתוכנית מסוימת מעוניינים לדעת כמה פעמים הפעולה Func הופעלה מעצם מטיפוס A שאינו B, וכמה פעמים היא הופעלה מעצם מטיפוס B. אם אפשר לקבל מידע זה — כתבו איזה שינויים יש לבצע במחלקות A ו-B. אם אי אפשר לקבל את המידע, הסבירו מדוע.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.