Square מכילה width, color, בונה, ואת paint/Paint ו-perimeter/Perimeter. Rectangle יורשת מ-Square, מוסיפה length ומעמיסה equals(Rectangle)/Equals(Rectangle) (לא דריסה של equals(Object)). שלושת הסעיפים בודקים העמסה חוקית, דריסה חוקית, ומעקב אחרי איזו equals נבחרת בפועל בכל קריאה.
Square מכילה width, color, בונה, ואת paint/Paint ו-perimeter/Perimeter. Rectangle יורשת מ-Square, מוסיפה length ומעמיסה equals(Rectangle)/Equals(Rectangle) (לא דריסה של equals(Object)). שלושת הסעיפים בודקים העמסה חוקית, דריסה חוקית, ומעקב אחרי איזו equals נבחרת בפועל בכל קריאה.
public class Square {
protected double width;
protected string color;
public Square(double val){ width = val; color = "black"; }
public void Paint(double scale, string color){ ... }
public virtual double Perimeter(double scale){ ... }
}
public class Rectangle : Square {
private double length;
public Rectangle(double val1, double val2):base(val1)
{
length = val2;
}
public bool Equals(Rectangle other){
return width == other.width && length == other.length;
}
}
אילו מהחתימות הבאות היא העמסה (overloading) חוקית של הפעולה Paint? הסבירו את תשובתכם!
- public int Paint (double y, string x)
- public void Paint (int x)
- public double Paint (double a, char b)
- private void Paint(double x, string y)
- private double Paint (string y, double x)
נתונה המחלקה Rectangle (מלבן) היורשת מ-Square (ראו את קוד המחלקה למעלה). עבור כל אחת מבין הפעולות הבאות קבעו אם אפשר להוסיף אותה למחלקה Rectangle? הסבירו את תשובתכם!
- private override double Perimeter (double x){...}
- public override double Perimeter (double y) {...}
- public override void Perimeter (){...}
- public override int Perimeter (int y) {...}
- public override void Perimeter (double x) {...}
לפניכם קטע קוד מהתוכנית הראשית: Square sqr1 = new Square(1); Square sqr2 = new Square(1); Square sqrRec = new Rectangle(1,2); Rectangle rec = new Rectangle(1,2); Console.WriteLine(sqr1.Equals(sqr2)); Console.WriteLine(sqrRec.Equals(rec)); Console.WriteLine(sqrRec.Equals((Square)rec)); Console.WriteLine(((Rectangle)sqrRec).Equals(rec)); Console.WriteLine(rec.Equals(sqrRec)); עקבו אחרי ביצוע קטע הקוד ורשמו מה יהיה הפלט.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.