שאלה זו שני סעיפים א-ב שאין קשר ביניהם. ענה על שניהם. סעיף א: נתונות חמש מחלקות B, X, Y, Z, Run. התת-סעיפים (1)-(4) שלפניך מתייחסים למחלקות אלה. התת-סעיפים אינם קשורים זה לזה — ענה על כולם. בכל תת-סעיף: קבע אם מתקבלת שגיאת הידור (קומפילציה); אם כן — הסבר מדוע.
שאלה זו שני סעיפים א-ב שאין קשר ביניהם. ענה על שניהם. סעיף א: נתונות חמש מחלקות B, X, Y, Z, Run. התת-סעיפים (1)-(4) שלפניך מתייחסים למחלקות אלה. התת-סעיפים אינם קשורים זה לזה — ענה על כולם. בכל תת-סעיף: קבע אם מתקבלת שגיאת הידור (קומפילציה); אם כן — הסבר מדוע.
// נתון (אין לשנות) — הקשר לסעיף ב:
interface IPerform {
void act();
int train();
}
public class Singer extends Artist implements IPerform {
private int hits;
public Singer(String name, double sal) { super(sal, name); this.hits = 5; }
public Singer(double sal, int hits) { super(sal, "Singer Name"); this.hits = hits; }
public Singer(int hits) { super(6532.6, "Some", "One"); this.hits = hits; }
public double value() {return this.hits * this.price();}
public int getNum() {return Artist.num;}
public double calc(double d) {return d * super.calc(10.2);}
public void print() {super.print(); System.out.println("Singer");}
public void act() {System.out.println("I am singing");}
}
public class Artist {
public static int num;
protected double sal;
protected String name;
public Artist(double sal, String name) { this.sal = sal; this.name = name; }
public Artist(double sal, String s1, String s2) { this.sal = sal; this.name = s1 + " " + s2; }
public double price() { return this.sal; }
public double calc(double d) { return d; }
public void print() { }
}
נתונות חמש מחלקות מנותקות B, X, Y, Z, Run: התת-סעיף (1) — בכל אחת מהמחלקות B,X,Y,Z מוגדרת הפעולה foo(){} (Foo() ב-C#), ובמחלקה Run מוגדרת bar(Object g){g.foo();} (Bar(object g){g.Foo();} ב-C#). האם מתקבלת שגיאת הידור (קומפילציה)? אם כן — הסבר מדוע.
הנח ש-X,Y,Z יורשות מ-B: תת-סעיף (2) — בכל אחת מהמחלקות X,Y,Z (לא ב-B) מוגדרת foo()/Foo(), ובמחלקה Run מוגדרת bar(B g){g.foo();} (Bar(B g){g.Foo();}). האם מתקבלת שגיאת הידור? אם כן — הסבר מדוע.
הנח ש-X,Y,Z יורשות מ-B: תת-סעיף (3) — בכל אחת מהמחלקות B,X,Y,Z מוגדרת foo()/Foo(), ובמחלקה Run מוגדרת bar(B g){g.foo();} (Bar(B g){g.Foo();}). האם מתקבלת שגיאת הידור? אם כן — הסבר מדוע.
הנח ש-X,Y,Z יורשות מ-B: תת-סעיף (4) — בכל אחת מהמחלקות B,X,Y,Z מוגדרת foo()/Foo(), ובמחלקה Run מוגדרת bar(Object g){g.foo();} (Bar(object g){g.Foo();}). האם מתקבלת שגיאת הידור? אם כן — הסבר מדוע.
אין קשר לסעיף א. לפניך המחלקה Singer שיורשת את המחלקה Artist ומממשת את הממשק IPerform שהמחלקה Singer ממשת (ראה קוד Singer ו-IPerform בשאלון). כתוב ב-Java (או C#) את כותרת המחלקה Artist, את התכונות ואת הפעולות המתחייבות מהמחלקה Singer והממשק IPerform הנתונים. אין צורך לממש את הפעולות של המחלקה Artist. אין לשנות את המחלקה Singer ואת הממשק IPerform.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.