בכיתה
1. חזרה
היחס שבין הורשה-הכלה-פולימורפיזם ו- UML.
2. היכרות ראשונים ותאורטית כהכנה ללימוד ממשקים בהמשך
הורשה מרובה
א. מהי הורשה-מרובה
מחלקה היורשת משתי מחלקות בסיס המקבילות זו לזו ונמצאות רמה אחת מעליה.
ב. דוגמה להורשה מרובה
בת-הים.
ג. חסרונות ההורשה-המרובה
* יורשת התכונה הזהה name (שם וטיפוס התכונה) משתי מחלקות הבסיס שלה.
נשאלת השאלה: את התכונה name של איזו מחלקת בסיס תקבל בהורשה מח' בת-הים?
* יורשת המתודה הזהה ()Eat (חתימת המתודה) משתי מחלקות הבסיס שלה.
יש לזכור כי המתודה ()Eat ממומשת באופן שונה בכל אחת ממחלקות הבסיס.
נשאלת השאלה: את מי משתי המתודות הללו תקבל בהורשה מחלקת בת-הים?
ד. מסקנה
מדובר בעניין מסובך, לא בשימוש אפילו בשפות בהן קיימת האפשרות להורשה מרובה, לא קיים ב- #C.
מחלקת הבסיס Shape
תרשים UML
א. צרו תרשים UML של המחלקה Shape
ושל שלוש מחלקות היורשות ממנה: Circle, Rectangle, Triangle.
תכונות מחלקת Shap
ב. על אילו תכונות נצהיר במחלקת הבסיס Shape, כך שיתאימו כתכונות שעוברות בהורשה
למחלקות הנגזרות ממנה: עיגול, מלבן ומשולש?
המחלקה Shape כמחלקה מופשטת
ג. נרצה לאפשר ליצור אובייקטים מהמחלקות היורשות של Shape: עיגול, מלבן ומשולש.
ד. האם ניתן ליצור אובייקט מחלקת Shape? האם נרצה לאפשר ליצור אובייקטים ממחלקה זו?
ה. איזו הגדרה מיוחדת נרצה להחיל על למחלקת Shape?
הפעולה ApprovedArea המשותפת למחלקות מלבן ומשולש
ו. נניח שמתכנן היישום כולו, הורה שיש לאפשר יצירת אובייקטים מהטיפוסים מלבן ומשולש,
רק אם השטח שלהם לפחות 10 מטר רבוע. מגבלה זו לא רלוונטית לאובייקטים מטיפוס עיגול.
הנחייתו של מתכנת היישום: ליצור פעולה בשם ApproveArea, המחזירה ערך בוליאני
שמציין אם שטח הצורה עומד בדרישות המינימום לשטח, או לא.
ז. האם נכתוב פעולה זו במחלקת Shape? מדוע?
ח. האם נכתוב פעולה זו גם במחלקה שאיננה מחלקת Shape?
ט. האם נכתוב פעולה זו אך ורק במחלקה שאיננה מחלקת Shape?
י. באיזו מחלקה או מחלקות נכתוב פעולה זו?
ט. האם חתימת הפעולה תהיה זהה בכל המחלקות בה החלטנו לכתוב אותה?
י. האם בלוק הפעולה (האלגוריתם) יהיה זהה בכל המחלקות בהן החלטנו לכתוב אותה?
יא. כיצד יש להודיע למתכנתים העובדים על המחלקות מלבן ומשולש שעליהם לממש פעולה זו?
על מנת שידעו שחובה עליהם לממש את הפעולה במחלקות אלו?
3. יצירת מחלקת שירות משלכם
א. הסבר המושג מחלקת שירות / ServiceClass
כאן (מופיע גם בדף 'קישורים' סעיף 175).
ב. תרגיל בניית מחלקת שירות ArrFuncsAndServiceClassArray" - Array"
כאן (מופיע גם בדף 'קישורים' סעיף 180).
1. חזרה
היחס שבין הורשה-הכלה-פולימורפיזם ו- UML.
2. היכרות ראשונים ותאורטית כהכנה ללימוד ממשקים בהמשך
הורשה מרובה
א. מהי הורשה-מרובה
מחלקה היורשת משתי מחלקות בסיס המקבילות זו לזו ונמצאות רמה אחת מעליה.
ב. דוגמה להורשה מרובה
בת-הים.
ג. חסרונות ההורשה-המרובה
* יורשת התכונה הזהה name (שם וטיפוס התכונה) משתי מחלקות הבסיס שלה.
נשאלת השאלה: את התכונה name של איזו מחלקת בסיס תקבל בהורשה מח' בת-הים?
* יורשת המתודה הזהה ()Eat (חתימת המתודה) משתי מחלקות הבסיס שלה.
יש לזכור כי המתודה ()Eat ממומשת באופן שונה בכל אחת ממחלקות הבסיס.
נשאלת השאלה: את מי משתי המתודות הללו תקבל בהורשה מחלקת בת-הים?
ד. מסקנה
מדובר בעניין מסובך, לא בשימוש אפילו בשפות בהן קיימת האפשרות להורשה מרובה, לא קיים ב- #C.
מחלקת הבסיס Shape
תרשים UML
א. צרו תרשים UML של המחלקה Shape
ושל שלוש מחלקות היורשות ממנה: Circle, Rectangle, Triangle.
תכונות מחלקת Shap
ב. על אילו תכונות נצהיר במחלקת הבסיס Shape, כך שיתאימו כתכונות שעוברות בהורשה
למחלקות הנגזרות ממנה: עיגול, מלבן ומשולש?
המחלקה Shape כמחלקה מופשטת
ג. נרצה לאפשר ליצור אובייקטים מהמחלקות היורשות של Shape: עיגול, מלבן ומשולש.
ד. האם ניתן ליצור אובייקט מחלקת Shape? האם נרצה לאפשר ליצור אובייקטים ממחלקה זו?
ה. איזו הגדרה מיוחדת נרצה להחיל על למחלקת Shape?
הפעולה ApprovedArea המשותפת למחלקות מלבן ומשולש
ו. נניח שמתכנן היישום כולו, הורה שיש לאפשר יצירת אובייקטים מהטיפוסים מלבן ומשולש,
רק אם השטח שלהם לפחות 10 מטר רבוע. מגבלה זו לא רלוונטית לאובייקטים מטיפוס עיגול.
הנחייתו של מתכנת היישום: ליצור פעולה בשם ApproveArea, המחזירה ערך בוליאני
שמציין אם שטח הצורה עומד בדרישות המינימום לשטח, או לא.
ז. האם נכתוב פעולה זו במחלקת Shape? מדוע?
ח. האם נכתוב פעולה זו גם במחלקה שאיננה מחלקת Shape?
ט. האם נכתוב פעולה זו אך ורק במחלקה שאיננה מחלקת Shape?
י. באיזו מחלקה או מחלקות נכתוב פעולה זו?
ט. האם חתימת הפעולה תהיה זהה בכל המחלקות בה החלטנו לכתוב אותה?
י. האם בלוק הפעולה (האלגוריתם) יהיה זהה בכל המחלקות בהן החלטנו לכתוב אותה?
יא. כיצד יש להודיע למתכנתים העובדים על המחלקות מלבן ומשולש שעליהם לממש פעולה זו?
על מנת שידעו שחובה עליהם לממש את הפעולה במחלקות אלו?
3. יצירת מחלקת שירות משלכם
א. הסבר המושג מחלקת שירות / ServiceClass
כאן (מופיע גם בדף 'קישורים' סעיף 175).
ב. תרגיל בניית מחלקת שירות ArrFuncsAndServiceClassArray" - Array"
כאן (מופיע גם בדף 'קישורים' סעיף 180).
לבית
1. השלמת מחלקת Array
השלימו עד השיעור הבא - את התרגיל "ArrFuncsAndServiceClassArray".
2. הבנת השאלות שעלו בפוסט זה
ענו לעצמכם על השאלות מפוסט זה בנושאים "הורשה-מרובה" ו- "מחלקת הבסיס Shape".
במידה ויהיה לכם צורך בדיון לגבי חלק משאלות הללו, נקיימו בתחילת השיעור הבא.
1. השלמת מחלקת Array
השלימו עד השיעור הבא - את התרגיל "ArrFuncsAndServiceClassArray".
2. הבנת השאלות שעלו בפוסט זה
ענו לעצמכם על השאלות מפוסט זה בנושאים "הורשה-מרובה" ו- "מחלקת הבסיס Shape".
במידה ויהיה לכם צורך בדיון לגבי חלק משאלות הללו, נקיימו בתחילת השיעור הבא.