מדרג getPrice שכל תת-מחלקה מוסיפה עליו (א'), ואז שני שאילתות על אוסף לקוחות שדורשות הבחנה שונה בין 'הוא-סוג-של' (ב', עם רקורסיה לתוך Triple) לבין 'הטיפוס המדויק' (ג').
מדרג getPrice שכל תת-מחלקה מוסיפה עליו (א'), ואז שני שאילתות על אוסף לקוחות שדורשות הבחנה שונה בין 'הוא-סוג-של' (ב', עם רקורסיה לתוך Triple) לבין 'הטיפוס המדויק' (ג').
public class Cable
{
private double subscriptionPayment; // מחיר קבוע למנוי
public double GetPrice()
{
return subscriptionPayment;
}
}
// חבילה בסיסית
public class BasicPackage : Cable
{
private double price; // מחיר חבילה בסיסית
}
// חבילה מורחבת המכילה ערוצים נוספים
public class ExtendedPackage : BasicPackage
{
private double price; // מחיר קבוע עבור כל ערוץ נוסף
private int numOfChannels;
private string[] namesOfChannels; // מערך שמות ערוצים
}
// מחלקה עבור טלפון
public class Phone : Cable
{
private double price; // מחיר שיחה
private int numberOfCalls; // מספר שיחות
}
// חבילה משולבת
public class Triple : Cable
{
private Cable package; // חבילה בסיסית או מורחבת
private Phone phone; // טלפון
private double priceOfInternet; // מחיר השימוש באינטרנט
}
// מחלקה עבור לקוח
public class Client
{
private string nameClient;
private Cable cable;
}
// לכל התכונות בכל המחלקות קיימות פעולות Get/Set.
סעיף א
ממשו את פעולת GetPrice בכל אחת מארבע המחלקות האחרות: BasicPackage, ExtendedPackage, Phone, Triple. ממשו את הפעולה GetPrice במחלקה Client.
public double GetPrice()
סעיף ב
כתבו במחלקה Company פעולה המדפיסה את שמות הלקוחות שיש להם ערוץ "ספורט".
public void PrintSportClients()
סעיף ג
כתבו במחלקה Company פעולה המחזירה את כמות הלקוחות שיש להם חבילה בסיסית בלבד.
public int CountBasicOnly()
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.