באקדמיה למוזיקה "שיר חדש" פותחה מערכת ממוחשבת לניהול תזמורת, ובה המחלקות: Instrum - כלי נגינה (name - שם הכלי, מחרוזת; material - החומר שממנו הכלי עשוי, מחרוזת). Bow - כלי קשת, יורשת מ-Instrum ומוסיפה bowLength - אורך הקשת (שלם). Wind - כלי נשיפה, יורשת מ-Instrum ומוסיפה numberOfValves - מספר השסתומים (שלם). Perc - כלי הקשה, יורשת מ-Instrum ומוסיפה hasSticks - האם יש שימוש במקלות הקשה (בוליאני). Musician - נגן בתזמורת (name - שם הנגן, מחרוזת; instrum - כלי הנגינה שלו, מטיפוס Instrum; כל נגן מנגן על כלי אחד בלבד - יחס הכלה). Orchestra - תזמורת (arrM - מערך של Musician; count - כמות הנגנים השמורים בפועל בתחילת המערך, ברצף וללא null ביניהם, אך המערך אינו בהכרח מלא עד סופו).
באקדמיה למוזיקה "שיר חדש" פותחה מערכת ממוחשבת לניהול תזמורת, ובה המחלקות: Instrum - כלי נגינה (name - שם הכלי, מחרוזת; material - החומר שממנו הכלי עשוי, מחרוזת). Bow - כלי קשת, יורשת מ-Instrum ומוסיפה bowLength - אורך הקשת (שלם). Wind - כלי נשיפה, יורשת מ-Instrum ומוסיפה numberOfValves - מספר השסתומים (שלם). Perc - כלי הקשה, יורשת מ-Instrum ומוסיפה hasSticks - האם יש שימוש במקלות הקשה (בוליאני). Musician - נגן בתזמורת (name - שם הנגן, מחרוזת; instrum - כלי הנגינה שלו, מטיפוס Instrum; כל נגן מנגן על כלי אחד בלבד - יחס הכלה). Orchestra - תזמורת (arrM - מערך של Musician; count - כמות הנגנים השמורים בפועל בתחילת המערך, ברצף וללא null ביניהם, אך המערך אינו בהכרח מלא עד סופו).
הניחו שבכל מחלקה מוגדרות פעולות get/set (Java) או Get/Set (C#) ופעולת בונה, גם אם אינן מפורטות במלואן בפתרון.
מקרא לתרשים היררכיה (כפי שמופיע בשאלון):
----|> = ירושה (חץ חלול)
<>---- = הכלה / קומפוזיציה (מעוין מלא בצד המכיל)
מקרא סימון תרשים היררכיה בין המחלקות: חץ חלול (אמצעות החץ) = ירושה; מעוין מלא (יהלום) = הכלה/אגרגציה.
----|> = inheritance (open arrowhead toward parent)
<>---- = aggregation/composition (filled diamond at whole side)
סרטטו תרשים היררכייה בין כל המחלקות. יש לסמן ירושה באמצעות החץ, והכלה באמצעות הסימן (מעוין).
כתבו את כותרות המחלקות ואת התכונות שלהן. הניחו שבכל מחלקה הוגדרו פעולות get ו-set וכן פעולות בונות.
כתבו במחלקה Orchestra פעולה ששמה withSticks, המחזירה את מספר הנגנים בתזמורת המנגנים בכלי הקשה שיש בהם שימוש במקלות.
public int WithSticks ()
מערך arrM "מסודר" הוא מערך שבו מערך שבו מופיעים נגני כלי הקשת קודם, אחר כך נגני כלי הנשיפה, ואחר כך נגני כלי ההקשה. כתבו במחלקה Orchestra פעולה ששמה insert, המקבלת נגן - musician שאינו מופיע במערך arrM. הניחו שלפני תחילת הפעולה המערך היה "מסודר", ושיש בתזמורת נגן אחד לפחות לפחות מכל סוג כלי. אם אין מקום לנגן נוסף במערך, הפעולה תחזיר false. אחרת, הפעולה תכניס את הנגן למקום המתאים במערך באופן שבו המערך ימשיך להיות "מסודר" (והנגנים יופיעו ברצף בתחילת המערך), ותחזיר true. הערה: אפשר לשנות את סדר הנגנים, ובלבד שהמערך שהמערך יהיה "מסודר" בסוף הפעולה.
public bool Insert (Musician musician)
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.