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

עקב התפרצות מגפת הקורונה החליט משרד הבריאות להקים מערכת לטיפול שוטף במצב התחלואה במדינה. הוגדרה המחלקה עיר בקורונה CityK בעלת שלוש תכונות: name – שם העיר מטיפוס מחרוזת; numOfResidents – מספר שלם המייצג את מספר התושבים בעיר; numOfPatients – מספר שלם המייצג את מספר החולים בעיר. (הנח כי קיימות פעולה בונה המקבלת את ערכי התכונות כפרמטרים, פעולות אחזור get() וקביעה set().)

```java
public class CountryStatus
{
  private String date;
  private CityK[] cities;
  private int nCity;
}
סעיף א-1

כתוב פעולה פנימית המקבלת עיר בקורונה, ומחזירה true אם לעיר הנוכחית ולעיר המתקבלת כפרמטר יש מספר חולים זהה, או false אם המספר שונה.

public boolean sameNumOfPatients(CityK other)

סעיף א-2

משרד הבריאות הגדיר את "שיטת הרמזור" שלפיה כל עיר מסומנת בצבע מסוים בהתאם לרמת התחלואה: עיר ירוקה היא עיר שיש בה פחות מ-5% חולים, עיר כתומה – 5%-15% חולים, ועיר אדומה – מעל 15% חולים. כתוב פעולה פנימית המחזירה את קטגוריית העיר על-פי שיטת הרמזור. על הפעולה להחזיר אחת מהמחרוזות red/orange/green בהתאם למספרי התושבים והחולים. שם הפעולה: public String getCityColor()

סעיף ב-1

הוגדרה המחלקה CountryStatus בעלת שלוש תכונות: date – תאריך עדכון המצב, מסוג מחרוזת; cities – מערך עצמים מסוג CityK, גודל המערך הוא 100; nCity – מספר שלם המייצג כמה ערים יש במערך.

public class CountryStatus
{
  private String date;
  private CityK[] cities;
  private int nCity;
}

כתוב פעולה בונה במחלקה CountryStatus, המאתחלת מערך ערים ריק. הפעולה מקבלת תאריך עדכון כפרמטר.

public CountryStatus(String date)

סעיף ב-2

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

public boolean addCity(String name, int numOfResidents, int numOfPatients)

סעיף ב-3

כתוב פעולה פנימית המקבלת כפרמטר אחת מהמחרוזות red/orange/green ("צבע העיר" לפי שיטת הרמזור) ומחזירה מערך חדש הכולל שמות הערים לפי ה"צבע" המבוקש. עליך להיעזר בפעולה getCityColor שכתבת בסעיף א'.

public String[] getCitiesByColor(String color)

סעיף ב-4

משרד הבריאות מעוניין לבדוק אם חל שינוי במצב לאחר סגר כללי. כתוב פעולה חיצונית המקבלת שני עצמים cs1, cs2 מסוג CountryStatus ומדפיסה שמות של ערים שהיו בסטטוס "אדום" (red) ב-cs1 ואת הערים ששינו את הסטטוס ב-cs2. הערות: 1. שים לב שמספר הערים וסדר הופעתן ב-cs1 ו-cs2 לא בהכרח זהים. 2. אפשר להניח שבשתי המחלקות קיימות פעולות get/set. אם השתמשת בפעולות נוספות, עליך לכתוב את הפעולות!

public static void printChangedFromRed(CountryStatus cs1, CountryStatus cs2)

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

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

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

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