צ'קליסט – שאלות OOP
מיועד לשאלות שאלות מהסוג של מציאת היררכיה, כתיבת בנאים וכתיבת קוד.
קביעת היררכיית הירושה
-
□ לפני כתיבת קוד, ציירו את ההיררכיה.
-
□ ציירו כל מחלקה בתוך מלבן נפרד.
-
□ השתמשו בחצים כדי לסמן ירושה. ראש החץ מופנה למחלקת האב.
-
□ האם הירושה שבניתי הגיונית?
השאלה שכדאי לשאול:
- האם מחלקה X היא סוג של מחלקה Y,
-
או שמחלקה X רק מכילה אובייקט מסוג Y?
-
□ האם העברתי למחלקת האב את כל התכונות והפעולות המשותפות?
-
□ האם נמנעתי מכפילויות מיותרות במחלקות היורשות?
לאחר שסיימתם לכתוב את הפתרון, עברו על הרשימה הבאה ובדקו את עצמכם.
תכונות (Fields)
- □ האם כל התכונות הוגדרו private?
- □ האם תכונה שנדרשת במחלקה יורשת הוגדרה protected?
- □ האם נמנעתי מהגדרה מחדש של תכונה שכבר קיימת במחלקת האב?
בנאים (Constructors)
- □ האם כתבתי את כל הבנאים שנדרשים לפי השאלה?
- □ האם הטיפוסים והסדר של הפרמטרים מתאימים לקטע הקוד הנתון?
- □ האם קראתי ל־base(...) כאשר צריך?
- □ האם קיימת הכלה (Composition)?
- □ אם כן – האם צריך לבצע new לאובייקט מוכל?
- □ האם צריך ליצור מערך באמצעות new?
פעולות פולימורפיות
- □ האם כתבתי virtual במחלקת הבסיס?
- □ האם כתבתי override במחלקות היורשות?
- □ האם נמנעתי מכתיבת virtual או override כאשר הפעולה אינה פולימורפית?
- □ האם השתמשתי בקוד שכבר קיים במחלקת האב במקום לשכפל אותו?
פעולות רגילות
- □ האם נמנעתי מהעתקת אותה פעולה למספר מחלקות כאשר ניתן לרכז אותה במחלקת האב?
- □ האם נמנעתי מכתיבת פעולה במחלקה יורשת כאשר היא זהה לחלוטין לזו שבמחלקת האב?
Get / Set
- □ בתוך המחלקה עצמה – האם ניגשתי ישירות לתכונות?
- □ האם נמנעתי משימוש מיותר ב־Get/Set בתוך המחלקה שבה התכונה מוגדרת?