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

שאלה זו שני סעיפים א-ב שאין קשר ביניהם. ענה על שניהם. סעיף א: נתונות חמש מחלקות B, X, Y, Z, Run. התת-סעיפים (1)-(4) שלפניך מתייחסים למחלקות אלה. התת-סעיפים אינם קשורים זה לזה — ענה על כולם. בכל תת-סעיף: קבע אם מתקבלת שגיאת הידור (קומפילציה); אם כן — הסבר מדוע.

// נתון (אין לשנות) — הקשר לסעיף ב:
interface IPerform {
    void Act();
    int Train();
}
public class Singer : Artist , IPerform {
    private int hits;
    public Singer(string name, double sal) : base(sal, name) { this.hits = 5; }
    public Singer(double sal, int hits) : base(sal, "Singer Name") { this.hits = hits; }
    public Singer(int hits) : base(6532.6, "Some", "One") { this.hits = hits; }
    public double Value()              {return this.hits * this.Price(); }
    public int GetNum()                {return Artist.num;               }
    public override double Calc(double d)  {return d * base.Calc(10.2);  }
    public override void Print()       {base.Print(); Console.WriteLine("Singer");}
    public void Act()                  {Console.WriteLine("I am singing");}
}
סעיף א1

תת-סעיף (1) — בכל אחת מהמחלקות B, X, Y, Z הוגדרה הפעולה public virtual void Foo(){}, ובמחלקה Run הוגדרה הפעולה public void Bar(Object g) {g.Foo(); }. האם תתקבל שגיאת הידור (קומפילציה)? אם כן — הסבר מדוע.

סעיף א2

הנח שהמחלקות X, Y, Z יורשות את המחלקה B. תת-סעיף (2) — בכל אחת מהמחלקות X, Y, Z הוגדרה הפעולה public virtual void Foo() {}, ובמחלקה Run הוגדרה הפעולה public void Bar(B g) {g.Foo(); }. האם תתקבל שגיאת הידור (קומפילציה)? אם כן — הסבר מדוע.

סעיף א3

הנח שהמחלקות X, Y, Z יורשות את המחלקה B. תת-סעיף (3) — בכל אחת מהמחלקות B, X, Y, Z הוגדרה הפעולה public virtual void Foo(){}, ובמחלקה Run הוגדרה הפעולה public void Bar(B g) {g.Foo(); }. האם תתקבל שגיאת הידור (קומפילציה)? אם כן — הסבר מדוע.

סעיף א4

הנח שהמחלקות X, Y, Z יורשות את המחלקה B. תת-סעיף (4) — בכל אחת מהמחלקות B, X, Y, Z הוגדרה הפעולה public virtual void Foo() {}, ובמחלקה Run הוגדרה הפעולה public void Bar(Object g) {g.Foo(); }. האם תתקבל שגיאת הידור (קומפילציה)? אם כן — הסבר מדוע.

סעיף ב

אין קשר לסעיף א. לפניך המחלקה Singer שיורשת את המחלקה Artist והממשק IPerform שהמחלקה Singer מממשת. כתוב ב-C# את כותרת המחלקה Artist, את התכונות ואת הפעולות המתחייבות מהמחלקה Singer והממשק IPerform הנתונים. אין צורך לממש את הפעולות של המחלקה Artist. אין לשנות את המחלקה Singer ואת הממשק IPerform.

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

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

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

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