עקב מגבלות מגפת הקורונה, חלק מהבחינות מתבצע בצורה ממוחשבת כאשר הסטודנטים נמצאים בביתם ועונים על השאלות באמצעות מערכת המבוססת על רשת האינטרנט. אם סטודנט רוצה לשאול שאלה על מטלה ספציפית הוא כותב אי-מייל למרכז תמיכה ומקבל תשובה מצוות המנחים גם היא בדואר האלקטרוני. בכל פנייה למרכז התמיכה יש לציין את מספר המטלה. אפשר להניח שבבחינה יש 12 מטלות הממוספרות בין 1 ל-12. כדי לייעל את תהליך ההתכתבות בין סטודנט לצוות המנחים הוקם פרויקט הכולל שלוש מחלקות: Time, Message, Mailbox. המחלקה Time מייצגת נקודת זמן לפי מספר שעות ומספר דקות; היא כבר נתונה ואפשר להשתמש בפעולות שבה, אין צורך לממש אותן. המחלקה מכילה: בנאי המקבל כפרמטרים שעה (0-23) ודקה (0-59); פעולות האחזור getHour()/getMinute(); הפעולה הבוליאנית before(Time other) המקבלת הפניה לאובייקט אחר other מסוג Time ומחזירה true אם הזמן המיוצג על-ידי האובייקט שמפעיל את הפעולה (this) קודם לזמן המיוצג באמצעות other, אחרת false; והפעולה addFiveMinutes() המחזירה הפניה לאובייקט חדש, המייצג זמן חמש דקות אחרי הזמן שמייצג האובייקט המפעיל את הפעולה (this). נתונה גם המחלקה Message המייצגת הודעת דואר אלקטרוני; תכונותיה: sender (כתובת השולח, מחרוזת), subject (נושא ההודעה, שהוא מספר המטלה, מספר שלם), content (תוכן ההודעה, מחרוזת), receivingTime (זמן קבלת ההודעה, מטיפוס Time), hasAttachment (אם ההודעה מכילה קובץ מצורף, בוליאני). המחלקה Message כבר כתובה ואפשר להשתמש בפעולות שבה, אין צורך לממש אותן; היא מכילה בנאי המקבל שישה פרמטרים (פרטי התכונות), ופעולות אחזור (get) לכל תכונה. המחלקה Mailbox מייצגת את תיבת הדואר; הייצוג נעשה באמצעות מערך ששומר את ההודעות. התכונות במחלקה: המערך של ההודעות Message[] inbox; מספר ההודעות שיש בתיבת הדואר int noOfMes.
עקב מגבלות מגפת הקורונה, חלק מהבחינות מתבצע בצורה ממוחשבת כאשר הסטודנטים נמצאים בביתם ועונים על השאלות באמצעות מערכת המבוססת על רשת האינטרנט. אם סטודנט רוצה לשאול שאלה על מטלה ספציפית הוא כותב אי-מייל למרכז תמיכה ומקבל תשובה מצוות המנחים גם היא בדואר האלקטרוני. בכל פנייה למרכז התמיכה יש לציין את מספר המטלה. אפשר להניח שבבחינה יש 12 מטלות הממוספרות בין 1 ל-12. כדי לייעל את תהליך ההתכתבות בין סטודנט לצוות המנחים הוקם פרויקט הכולל שלוש מחלקות: Time, Message, Mailbox. המחלקה Time מייצגת נקודת זמן לפי מספר שעות ומספר דקות; היא כבר נתונה ואפשר להשתמש בפעולות שבה, אין צורך לממש אותן. המחלקה מכילה: בנאי המקבל כפרמטרים שעה (0-23) ודקה (0-59); פעולות האחזור getHour()/getMinute(); הפעולה הבוליאנית before(Time other) המקבלת הפניה לאובייקט אחר other מסוג Time ומחזירה true אם הזמן המיוצג על-ידי האובייקט שמפעיל את הפעולה (this) קודם לזמן המיוצג באמצעות other, אחרת false; והפעולה addFiveMinutes() המחזירה הפניה לאובייקט חדש, המייצג זמן חמש דקות אחרי הזמן שמייצג האובייקט המפעיל את הפעולה (this). נתונה גם המחלקה Message המייצגת הודעת דואר אלקטרוני; תכונותיה: sender (כתובת השולח, מחרוזת), subject (נושא ההודעה, שהוא מספר המטלה, מספר שלם), content (תוכן ההודעה, מחרוזת), receivingTime (זמן קבלת ההודעה, מטיפוס Time), hasAttachment (אם ההודעה מכילה קובץ מצורף, בוליאני). המחלקה Message כבר כתובה ואפשר להשתמש בפעולות שבה, אין צורך לממש אותן; היא מכילה בנאי המקבל שישה פרמטרים (פרטי התכונות), ופעולות אחזור (get) לכל תכונה. המחלקה Mailbox מייצגת את תיבת הדואר; הייצוג נעשה באמצעות מערך ששומר את ההודעות. התכונות במחלקה: המערך של ההודעות Message[] inbox; מספר ההודעות שיש בתיבת הדואר int noOfMes.
public class Time
{
public Time(int hour, int minute) {...}
public boolean before(Time other) {...}
public Time addFiveMinutes() {...}
// getHour(), getMinute() -- already implemented, no need to write them
}
עליכם להוסיף במחלקה Message את הפעולה public Message reply (String text). הפעולה מקבלת כפרמטר מחרוזת text ומחזירה הודעה לשולח. הפעולה צריכה להחזיר אובייקט שהוא הודעה חדשה עם הפרמטרים המפורטים להלן: כתובת השולח החדשה תהיה "support@uni.ac.il"; נושא ההודעה יהיה מספר שלילי ההפוך לנושא ההודעה הנוכחית; תוכן ההודעה יישאר כשהיה, ויתווסף לו בסופו רווח, ואז תוכן הפרמטר text; זמן ההודעה יהיה זמן ההודעה שהתקבלה בתוספת חמש דקות; בהודעה החדשה אין קבצים מצורפים.
public Message reply(String text)
כתבו במחלקה Mailbox את הבנאי (constructor) המקבל כפרמטר מספר שלם וחיובי num, ויוצר אובייקט שבו מערך בגודל המקסימלי של num הודעות.
public Mailbox(int num)
כתבו במחלקה Mailbox את הפעולה int howManyBetweenTimes(Time first, Time second) המקבלת כפרמטרים שני זמנים, first ו-second, ומחזירה את מספר ההודעות שהתקבלו בתיבה בין הזמנים first ו-second (לא כולל את הזמנים עצמם).
public int howManyBetweenTimes(Time first, Time second)
כתבו במחלקה Mailbox את הפעולה int mostPopularSubject() המחזירה את הנושא הפופולרי ביותר, כלומר מספר המטלה שלגביה היו הכי הרבה פניות של סטודנטים.
public int mostPopularSubject()
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.