חניון תת-קרקעי משרת כמה חברות היי-טק. לכל חברה מוקצית מכסה מקסימלית של מקומות חניה (מספר הרכבים של החברה אשר יכולים לחנות בו-זמנית), ויש לנהל את הרכבים בהתאם לחברה שאליה הם משויכים ולמכסות המוקצות לה. לשם כך הוגדרו המחלקות הבאות:
חניון תת-קרקעי משרת כמה חברות היי-טק. לכל חברה מוקצית מכסה מקסימלית של מקומות חניה (מספר הרכבים של החברה אשר יכולים לחנות בו-זמנית), ויש לנהל את הרכבים בהתאם לחברה שאליה הם משויכים ולמכסות המוקצות לה. לשם כך הוגדרו המחלקות הבאות:
המחלקה "רכב חברה" (CompanyCar) ולה התכונות:
- מספר הרישוי (licensePlate) – מחרוזת, string
- היצרן (manufacturer) – מחרוזת, string
- שם החברה שהרכב משויך אליה (company) – מחרוזת, string
המחלקה "מגבלת חברה" (CompanyLimit) ולה התכונות:
- שם החברה (companyName) – מחרוזת, string
- המגבלה המקסימלית (companyLimit) – מספר שלם, int
בכל מחלקה הוגדרה פעולה בונה המקבלת ערכים לכל התכונות והפעולות Get/Set ו-ToString.
-
הגדירו מחלקה בשם "חניון חברות" (Parking) הכוללת את התכונות הבאות:
- מערך של רכבים (cars) – מערך של עצמים מסוג "רכב חברה" בגודל מקסימלי של 150.
- מערך של מקומות חניה (parkingSpots) – מערך של מחרוזות (string) באותו הגודל, המציין את מקום החניה של הרכב המתאים (לדוגמה: "Q21", "A4", "P10").
- מספר הרכבים הנוכחי בחניה (currentCars) – מספר שלם, int.
- מגבלות חניה (limits) – מערך של עצמים מסוג CompanyLimit, המכיל את המכסות לכל חברה.
-
כתבו במחלקה Parking פעולה בונה, המקבלת מערך limits מאותחל (עם החברות והמגבלות שלהן), ומייצרת חניון ללא רכבים, כלומר מאתחלת את מערכי הרכבים ומקומות החניה בגודל 150 ואת התכונה currentCars ל-0.
כתבו במחלקה "חניון חברות" פעולה המקבלת מקום בחניה (spot). הפעולה תבדוק אם מקום זה פנוי. אם כן – הפעולה תחזיר ערך true, ואם לא – הפעולה תחזיר ערך false.
כותרת הפעולה:
public bool CheckSpot(string spot)
כתבו במחלקה "חניון חברות" פעולה המקבלת את פרטי הרכב ואת מקום החניה (spot) ומנסה לחנות אותו:
- אם החניה spot תפוסה על ידי רכב אחר, הפעולה תדפיס הודעה מתאימה ותחזיר false.
- אם החברה כבר ניצלה את המכסה שלה, הפעולה תדפיס הודעה מתאימה ותחזיר false.
- אם המכסה לא נוצלה במלואה, הפעולה תייצר רכב חדש (עצם מסוג CompanyCar) עם הפרטים שקיבלה, תוסיף את הרכב ותחזיר true.
כותרת הפעולה:
public bool ParkCar(string license, string manufacturer, string company, string spot)אפשר להניח שיש מקומות פנויים בחניון, והרכב (עם מספר רישוי הנתון) כבר לא נמצא בחניון.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.