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

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

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

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

IDownloadable «ממשק»: void download(), int getSize()

IGiftable «ממשק»: double getAdditionPrice(), String getGiftType()

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

  • protected String name
  • protected String author
  • protected double price

AudioBook (ספר שמע) — extends Book, implements IDownloadable:

  • private int duration

EBook (ספר אלקטרוני) — extends Book, implements IDownloadable:

  • protected int fileSize

PaperBook (ספר נייר) — extends Book, implements IGiftable:

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

GiftEBook (ספר) — extends EBook, implements IGiftable:

  • private double addition
סעיף א

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

סעיף ב

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

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

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

סעיף ג

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

סעיף ד

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

סעיף ה

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

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

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

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

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