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

ברשות הדואר החליטו למחשב את המערך לקבלת דברי הדואר. לצורך כך הוגדרו שלוש מחלקות שונות: MailItem, Letter ו-Package.

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

  • שם שולח המכתב, מטיפוס מחרוזת, string.
  • מען המכתב (כתובת), מטיפוס מחרוזת, string.
  • דואר רשום, מטיפוס בוליאני bool: true – עבור דואר רשום, false – עבור דואר רגיל.
  • גודל המכתב, טיפוס תווי, char ('S' – עבור מכתב קטן, 'B' – עבור מכתב בגודל סטנדרטי, 'L' – עבור מכתב גדול).
  • מחיר בסיסי למשלוח מכתב בגודל סטנדרטי, מטיפוס מספר ממשי, double.

מחיר משלוח מכתב תלוי בגודלו ובסוגו: בעבור מכתב בדואר רשום יש להוסיף 10 ₪, עבור מכתב קטן יש הנחה של שני שקלים, עבור מכתב גדול יש תוספת של 3 ₪.

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

  • שם שולח החבילה, מטיפוס מחרוזת, string.
  • מען החבילה (כתובת), מטיפוס מחרוזת, string.
  • משקל החבילה בקילוגרמים, מטיפוס מספר שלם, int.
  • האם שביר?: true – אם תוכן החבילה שביר, false – אם לא שביר.
  • מחיר בסיסי למשלוח חבילה, מטיפוס מספר ממשי, double.

מחיר משלוח חבילה תלוי בגודל החבילה ובסוגה: בעבור משקל פחות מ-5 קילוגרמים יש לשלם מחיר בסיסי. מעל 5 קילוגרמים יש לשלם תוספת של 3 ₪ לכל קילוגרם נוסף. אם התוכן שביר יש להוסיף עוד 15 ₪.

המחלקה MailItem היא מחלקת האב למחלקות Letter ו-Package (המחלקות Letter ו-Package יורשות מהמחלקה MailItem).

סעיף א

כתבו כותרות ותכונות של כל אחת מהמחלקות MailItem, Letter ו-Package.

סעיף ב

public double GetRealPrice()

כתבו פעולה. הפעולה תחשב ותחזיר מחיר סופי של משלוח. יש לציין באיזה מחלקה/מחלקות צריך להוסיף את הפעולה בהתאם לעקרונות תכנות מונחה עצמים.

סעיף ג

public static string BigSender(MailItem[] args)

כתבו פעולה. הפעולה מקבלת מערך של משלוחים ומחזירה את שם השולח של המשלוח שמחיר המשלוח שלו הוא הגבוה ביותר. אם אין אף משלוח במערך, הפעולה תחזיר ערך null. אפשר להניח שיש רק משלוח אחד כזה. אפשר להניח שקיימות פעולות set/get בכל מחלקה.

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

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

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

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