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

חברת "דן" מעוניינת למחשב את שירותי המודיעין שלה עבור קווי האוטובוס בעיר. לצורך כך הוגדרו שלוש מחלקות: Time, BusRoute ו-CityTransport.

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

class Time:
    def __init__(self, h, m):
        self.hour = h
        self.minute = m

במחלקה Time הוגדרה פונקציה min_from_midnight המחזירה את מספר הדקות שעברו מחצות (0:00). אין צורך לממש אותה!

סעיף א

כתבו במחלקה Time את הפונקציה add המקבלת את המספר השלם החיובי min_to_add. הפונקציה תחזיר אובייקט חדש מסוג Time המייצג את נקודת הזמן לאחר הוספת min_to_add דקות לזמן הנוכחי. כותרת הפונקציה: def add(self, min_to_add) לדוגמה, אם האובייקט הנוכחי הוא 8:30 והפונקציה קיבלה 45, יוחזר אובייקט חדש המייצג את נקודת הזמן 9:15.

סעיף ב

המחלקה BusRoute מייצגת מסלול של קו אוטובוס. תכונות המחלקה:

  • line_no – מספר קו (למשל: "61") – מטיפוס מחרוזת str;
  • stops – רשימת שמות של תחנות העצירה במסלול – מטיפוס רשימת מחרוזות list של str;
  • durations – רשימה של מספרים שלמים, list של int. הערך k ברשימה מציין את מספר הדקות הדרושות לאוטובוס כדי להגיע מתחנה k לתחנה k+1.

כתבו במחלקה BusRoute את שתי הפונקציות הבאות:

  1. פונקציה בוליאנית המקבלת שמות של שתי תחנות st1 ו-st2 ובודקת האם ניתן להגיע מ-st1 ל-st2 באמצעות קו זה (כלומר, ששתיהן קיימות ברשימת תחנות ו-st2 מופיעה אחרי st1). כותרת הפונקציה: def is_route_possible(self, st1, st2)
  2. פונקציה המקבלת שם של תחנת יעד stop_name וזמן יציאה למסלול start_time. הפונקציה תחזיר את זמן ההגעה לתחנה זו. אפשר להניח שהתחנה stop_name קיימת במסלול. כותרת הפונקציה: def get_arrival_time(self, start_time, stop_name)
סעיף ג

המחלקה CityTransport מייצגת מערכת הקווים העירונית. למחלקה תכונה אחת:

  • routes – רשימת קווי אוטובוס (רשימה של אובייקטים מסוג BusRoute).

כתבו במחלקה CityTransport את הפונקציה המקבלת תחנת מוצא ותחנת יעד. הפונקציה תדפיס (מספרי הקווים line_no) המאפשרים נסיעה מתחנת מוצא לתחנת יעד. כותרת הפונקציה: def print_relevant_lines(self, origin, destination)

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

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

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

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