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

החנות "ספר לכל" מוכרת סוגים שונים של ספרים: ספרים מודפסים, ספרי שמע, ספרים אלקטרוניים. חלק מהמוצרים ניתן לרכוש באריזת מתנה (בעבור תשלום נוסף).

לשם קידום מכירות ספרים, חנות "ספר לכל" פיתחה מערכת לניהול מלאי הספרים הכוללת את המחלקות הבאות: GiftEBook, PaperBook, EBook, AudioBook, Book ו-2 ממשקים IGiftable ו-IDownloadable.

לפניכם תרשים UML המתאר קשרים בין המחלקות והממשקים (חץ מלא=הרחבה (ירושה), חץ מקווקו=מימוש ממשק):

IDownloadable «ממשק»: void Download(), int GetSize()

IGiftable «ממשק»: double GetAdditionPrice(), string GetGiftType()

Book (ספר) — מחלקת-על:

  • protected string name
  • protected string author
  • protected double price

AudioBook (ספר שמע) — יורשת מ-Book, מממשת IDownloadable:

  • private int duration

EBook (ספר אלקטרוני) — יורשת מ-Book, מממשת IDownloadable:

  • protected int fileSize

PaperBook (ספר נייר) — יורשת מ-Book, מממשת IGiftable:

  • private int year
  • private int pages
  • private double addition

GiftEBook (ספר) — יורשת מ-EBook, מממשת IGiftable:

  • private double addition
סעיף א

כתבו עבור כל מחלקה, את כותרת המחלקה ואת הכותרות של כל הפעולות שחייבות להיות במחלקה.

סעיף ב

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

const double EBOOK_FACTOR = 0.8;
const double AUDIOBOOK_FACTOR = 1.2;
const double PAPERBOOK_FACTOR = 1.0;

באיזו מחלקה או באילו מחלקות יש להוסיף את הקבועים הנ"ל? הסבירו את תשובתכם.

סעיף ג

כתבו פעולה או פעולות המחזירה את מחיר הספר (ללא אריזת מתנה), עבור כל סוג ספר, יש לציין באיזו מחלקה צריך להוסיף את הפעולה או את הפעולות.

סעיף ד

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

סעיף ה

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

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

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

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

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