דילוג לתוכן הראשי

11.1.23 יום ד', (חוף, אשכול ב', שעות 7-8) - מחלקה מופשטת

 בכיתה 

1. Abstract Class - מחלקה אבסטרקטית
    א. מהי מחלקה מופשטת
        המחלקה מופשטת היא מחלקה שלא ניתן ליצור ממנה עצמים, אך ניתן לרשת ממנה.
    ב. הרציונל לשימוש במחלקה מופשטת
        ניקח לדוגמה את מחלקת האב Shape שלה 2 תכונות: נקודת האמצע של הצורה ואת שם הצורה.
        לא נכון ליצור עצמים ממחלקה זו, כיוון שצורה צריכה להיות ספציפית (קו, מלבן, עיגול...) ולכן,
        תימנע האפשרות של ליצור ממנה (בטעות) עצמים.
    ג. ניתן ליצור מחלקות היורשות מהמחלקה מופשטת
        מצד אחת, מטרתה של מחלקת Shape להכיל את התכונות המשותפות לכל הצורות, ולכן כל אחת 
        ממחלקות הצורות השונות תירש ממנה.
    ד. כתיבת פעולות במחלקה אבסטרקטית 
        במחלקה אבסטרקטית ניתן לכתוב פעולות רגילות.
        במחלקה אבסטרקטית (ורק בה) ניתן לכתוב פעולות אבסטרקטיות.
        מהי פעולה אבסטרקטית?
          מראה הפעולה
          פעולה מופשטת היא שורת קוד אחת, המהווה כותרת של פעולה ובסופה נקודה-פסיק (' ; ').
          כלומר - פעולה מופשטת היא פעולה ללא מימוש.
          מהות הפעולה
          פעולות אלה הן כמו 'חוזה מחייב', כלומר - בכל אחת מהמחלקות היורשות מ- Shape,
          כמו לדוגמה המחלקות Rectangle, Circle, חייבת להיות פעולה ממומשת בעלת חתימה זהה.
          דוגמה לשימוש בפעולה אבסטרקטית
          במחלקת האב Shape קיימת הפעולה האבסטרקטית הבאה (שימו לב לנקודה פסיק בסוף השורה):
                                                                                                                ;()public double GetArea                 דוגמה1: מימוש הפעולה המופשטת במחלקה היורשת Rectangle 
          במחלקות מלבן הפעולה תיכתב בלוגיקה התכנותית מתאימה לחישוב שטח מלבן:
                                                                                                                                       ;()public double GetArea
                                                                                                                                             }                                                                                                ;return this. width * this.height                                                                                                                                                          
{
          דוגמה2:  מימוש הפעולה המופשטת במחלקה היורשת Circle
          במחלקת עיגול הפעולה תיכתב בלוגיקה תכנותית המתאימה לחישוב שטח עיגול:
                                                                                                      ;()public double GetArea
                                                                                                                                            }                                                                             ;(return Math.PI * Math.Pow(this.radius, 2                                                                                                                                                           {

2. תרגיל ShapesProject-Basic1
    בנושאים casting, is. 
3.
 תרגיל AnimalsProject - drill02
    נושאי התרגיל: abstract, is, virtual-override. יש להשלימו בבית.
4. דף הסבר בנושא הורשה-הכלה-פולימורפיזם
    יש לקרוא הדף בבית.

לבית
קריאה ותרגול
1קראו הדף שקיבלתם בנושא הורשה-הכלה-פולימורפיזם (ראו דף זה גם בסעיף 170).
1
קראו אודות מחלקה אבסטרקטית (סעיף 215 בדף 'קישורים').
2בצעו את תרגיל AnimalsProject - drill02 (סעיף 220 בדף 'קישורים').

בשיעורים הבאים
1הסברהורשה-הכלה-פולימורפיזם - Inheritance-Composition-Polymorphism (ס' 170).
2. תרגיל: RentalProject-drill01 תרגיל אחרון לפני לימוד ממשקים (סעיף 230).
3. תרגיל: ClassStudentsProject הוספת תכונה מורכבת (Complex Data-Type)
               המוכלת (Composition) במחלקה (ס' 190).
4. תרגיל: SchoolEntitiesProject שימוש באופרטור is ודריסת פעולות בהיררכיית המחלקות (ס' 210).