חברת Cloud-Tech מספקת תשתיות מחשוב. בתחילה, החברה סיפקה רק רכיבי חומרה, אך עם הזמן התרחבה גם למכירת רישיונות תוכנה. לפניכם המחלקות המגדירות את רכיבי המערכת:
חברת Cloud-Tech מספקת תשתיות מחשוב. בתחילה, החברה סיפקה רק רכיבי חומרה, אך עם הזמן התרחבה גם למכירת רישיונות תוכנה. לפניכם המחלקות המגדירות את רכיבי המערכת:
- המחלקה Hardware עבור רכיבי חומרה פיזיים;
- המחלקה Server עבור שרתי מחשוב;
- המחלקה Switch עבור מתגי תקשורת;
- המחלקה SoftwareLicense עבור רישיונות תוכנה (כגון Windows או Oracle).
public class Hardware {
private string serialNumber; // מספר סידורי
private double price; // מחיר יחידה
public double GetPrice() { return this.price; }
}
public class Server : Hardware {
private int ramGB; // זיכרון בג'יגה ביייט
private int cpuCores; // מספר ליבות מעבד
}
public class Switch : Hardware {
private int portsCount; // מספר פורטים
private bool managed; // האם מנוהל
public int GetPortsCount() { return this.portsCount; }
public bool IsManaged(){return this.managed;}
}
public class SoftwareLicense {
private string softwareName; // שם התוכנה
private int months; // משך הרישיון בחודשים
private double monthlyRate; // עלות חודשית
public double GetPrice(){
return (this.months * this.monthlyRate);
}
}
סעיף א
בתחילת דרכה, המחלקה ProjectOrder ניהלה רק רכיבי חומרה המסופקים ללקוח. למחלקה התכונות האלה:
string clientName– שם הלקוח;Hardware[] items– מערך של פריטי חומרה בלבד.
כתבו במחלקה ProjectOrder את הפעולה CountLargeSwitches. הפעולה תחזיר כמות מתגי תקשורת הניתנים לניהול שיש להם יותר מ-16 פורטים.
סעיף ב
החברה החליטה לאפשר ללקוחות להוסיף להזמנה גם רישיונות תוכנה (SoftwareLicense). כעת המחלקה ProjectOrder צריכה להחזיק במערך אחד את כל סוגי המוצרים (גם חומרה וגם רישיונות).
- אילו שינויים יש לבצע בהגדרת התכונות של המחלקה ProjectOrder כדי לתמוך בדרישה החדשה?
- כתבו פעולה פנימית
public double CalculateTotal(). הפעולה תחזיר את העלות הכוללת של כל הפריטים במערך החדש.
הערה: אין להוסיף מחלקות או לשנות את יחסי הירושה הקיימים.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.