אתם מתרגלים שאלה מתוך מה"ט אלגוריתמיקה ותכנות — הנדסאי תוכנהמבחן 2022 · אביב מועד ב · שאלה 12כל שאלות המבחן ←
תכנות מונחה עצמיםמחלקות ואובייקטים

הנהלת רכבת ישראל החליטה למחשב את שרותי המודיעין שלה. לצורך כך נגדיר שתי מחלקות: 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.

לדוגמה, רכבת מבאר-שבע לאשדוד:

012345
Beer-ShevaOfakimNetivotSderotAshkelonAshdod
01234
1525152010

רכבת נוסעת 15 דקות מבאר-שבע לאופקים, 25 דקות מאופקים לנתיבות ... 10 דקות מאשקלון לאשדוד.

במחלקה Train הוגדרו פעולה בונה, פעולות get ו-set ופעולה toString. אין צורך לממש אותן!

```csharp
public class Time
{
    private int hour;
    private int minute;
    public Time(int h, int m)
     {
       hour = h; 
       minute = m;
     }   
}
סעיף א-1

כתבו במחלקה Time בנאי המקבל את מספר הדקות שעברו מחצות ומאתחל את תכונות העצם בהתאם.

לדוגמה: אם עברו 210 דקות, נקודת זמן הנוכחית היא 2:30.

public Time(int minutesFromMidnight)

סעיף א-2

כתבו במחלקה Time פעולה המחזירה את מספר הדקות שעברו מחצות:

public int minFromMidnight()

public int MinFromMidnight()

סעיף ב-1

כתבו למחלקה Train פעולה בוליאנית המקבלת שתי תחנות station1 ו-station2. הפעולה בודקת אם אפשר להגיע מ-station1 ל-station2 (בכיוון נסיעת הרכבת). אם כן – הפעולה מחזירה true, ולא הפעולה תחזיר false.

public bool IsPossible(string station1, string station2)

סעיף ב-2

כתבו למחלקה Train פעולה שמקבלת את שם תחנת היעד station, מחשבת ומחזירה את זמן ההגעה של הרכבת לתחנה זו. הערה: אם station לא נמצאת במסלול של הרכבת, הפעולה תחזיר null.

public Time GetArrivalTime(string station)

סעיף ג-1

המחלקה Information מייצגת את לוח הרכבות. הייצוג נעשה באמצעות מערך ששומר את רשימת הרכבות. למחלקה תכונה אחת: מערך של רכבות — Train[] trains.

כתבו במחלקה Information פעולה המקבלת תחנה station ומחזירה את מספר הרכבות אשר מגיעות או יוצאות מתחנה זו.

public int Count(string station)

סעיף ג-2

כתבו במחלקה Information פעולה printData המקבלת שתי תחנות station1 ו-station2 ומדפיסה את כל הרכבות שאפשר להשתמש בהן כדי להגיע מ-station1 ל-station2. לגבי כל רכבת יש להציג את מספר הרכבת ואת נקודות הזמן שבהן היא מגיעה ל-station1 ול-station2.

public void PrintData(string station1, string station2)

שאלות ותגובות על השאלה

🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות

שאלו כאן — ותקבלו מענה מוסמך.

🎓 מרצה לתכנות עונה כאן — תקבלו מענה מקצועי