הנהלת רכבת ישראל החליטה למחשב את שרותי המודיעין שלה. לצורך כך נגדיר שתי מחלקות: Time, Train.
הנהלת רכבת ישראל החליטה למחשב את שרותי המודיעין שלה. לצורך כך נגדיר שתי מחלקות: Time, Train.
המחלקה Time מייצגת נקודת זמן לפי מספר שעות ומספר דקות.
במחלקה Time הוגדרו פעולות get ו-set ופעולה toString. אין צורך לממש אותן!
המחלקה Train מייצגת רכבת.
תכונות המחלקה הן:
- code – מספר הרכבת, מטיפוס מחרוזת (String/string).
- start – זמן היציאה של הרכבת, מטיפוס Time.
- stations – מערך תחנות ביניים, איברי המערך מטיפוס מחרוזת (String/string). רכבת מתחילה את דרכה בתחנה הנמצאת בתא ה-0 של המערך, עוברת לתחנה שנמצאת בתא ה-1, אחר כך לתחנה הנמצאת בתא ה-2, וכך עד לתחנה האחרונה.
- intervals – מערך מטיפוס מספרים שלמים (int). הערך שנמצא בתא k מציין את מספר הדקות שצריכה רכבת כדי להגיע מתחנה k לתחנה k+1.
לדוגמה, רכבת מבאר-שבע לאשדוד:
| 0 | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| Beer-Sheva | Ofakim | Netivot | Sderot | Ashkelon | Ashdod |
| 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| 15 | 25 | 15 | 20 | 10 |
רכבת נוסעת 15 דקות מבאר-שבע לאופקים, 25 דקות מאופקים לנתיבות ... 10 דקות מאשקלון לאשדוד.
במחלקה Train הוגדרו פעולה בונה, פעולות get ו-set ופעולה toString. אין צורך לממש אותן!
```java
public class Time
{
private int hour;
private int minute;
public Time(int h, int m)
{
hour = h;
minute = m;
}
}
כתבו במחלקה Time בנאי המקבל את מספר הדקות שעברו מחצות ומאתחל את תכונות העצם בהתאם.
לדוגמה: אם עברו 210 דקות, נקודת זמן הנוכחית היא 2:30.
public Time(int minutesFromMidnight)
כתבו במחלקה Time פעולה המחזירה את מספר הדקות שעברו מחצות:
public int minFromMidnight()
כתבו למחלקה Train פעולה בוליאנית המקבלת שתי תחנות station1 ו-station2. הפעולה בודקת אם אפשר להגיע מ-station1 ל-station2 (בכיוון נסיעת הרכבת). אם כן – הפעולה מחזירה true, ולא הפעולה תחזיר false.
public boolean isPossible(String station1, String station2)
כתבו למחלקה Train פעולה שמקבלת את שם תחנת היעד station, מחשבת ומחזירה את זמן ההגעה של הרכבת לתחנה זו. הערה: אם station לא נמצאת במסלול של הרכבת, הפעולה תחזיר null.
public Time getArrivalTime(String station)
המחלקה Information מייצגת את לוח הרכבות. הייצוג נעשה באמצעות מערך ששומר את רשימת הרכבות. למחלקה תכונה אחת: מערך של רכבות — Train[] trains.
כתבו במחלקה Information פעולה המקבלת תחנה station ומחזירה את מספר הרכבות אשר מגיעות או יוצאות מתחנה זו.
public int count(String station)
כתבו במחלקה Information פעולה printData המקבלת שתי תחנות station1 ו-station2 ומדפיסה את כל הרכבות שאפשר להשתמש בהן כדי להגיע מ-station1 ל-station2. לגבי כל רכבת יש להציג את מספר הרכבת ואת נקודות הזמן שבהן היא מגיעה ל-station1 ול-station2.
public void printData(String station1, String station2)
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.