ראשי
סיכומים ומושגי יסוד
פולימורפיזם
method-step-0
סיכומיםתרגול מודרךבחנים

שלב 0: בניית הטיוטה

אומנות הטיוטה: מעקב משתנים ופולימורפיזם

המדריך המלא לכתיבת טיוטה נכונה (Dry Run) בשאלות מעקב. יצירת טיוטה מסודרת היא המפתח לפתרון שאלות ירושה ופולימורפיזם מבלי ללכת לאיבוד.

1 ארבעת הכללים להגדרת משתנה

עבור כל משתנה שאנו נתקלים בו בקוד, חובה לכתוב בטיוטה בדיוק ארבעה פרטים, משמאל לימין. אין צורך להעתיק את תחביר השפה במדויק (למשל, אין צורך במילה new), אלא להתמקד במהות:

  1. הטיפוס בזמן קומפילציה (הטיפוס הסטטי): זהו הטיפוס דרכו הוגדר המשתנה. הוא אינו משתנה לעולם במהלך הריצה. טיפוס זה הוא שקובע (בזמן קומפילציה) לאילו מתודות נוכל לגשת ואיזו העמסה (Overload) תופעל.
  2. שם המשתנה: השם המזהה שניתן לו בקוד (לדוגמה a, b או arr).
  3. סימן שווה (=): ההפרדה הברורה בין מה שקורה בזמן ההידור לבין מה שקורה בפועל בזיכרון.
  4. הטיפוס בזמן ריצה (הטיפוס הדינמי): מצביע על סוג האובייקט שנוצר בפועל בזיכרון (לאיזו מחלקה עשינו new). בניגוד לטיפוס הסטטי, טיפוס זה יכול להשתנות במהלך התוכנית. הוא זה שיקבע (בזמן ריצה) איזו מתודה ספציפית תבוצע במקרה של דריסה (Override).

2 תחזוקת ערכי התכונות (Attributes)

מתחת לשורת הגדרת המשתנה (הכוללת את ארבעת הפרטים), יש לרשום את כל התכונות של האובייקט. חוק ברזל: יש להיות עקביים ולעדכן את הערכים ברצף תוך כדי הריצה. ברגע שערך של תכונה משתנה כתוצאה מפעולה או בנאי (Constructor), יש למחוק או להעביר קו על הערך הישן ולכתוב לצידו את הערך המעודכן.

דוגמאות לטיוטה בזמן אמת

דוגמה 1: יצירה ועדכון תכונה

קוד מקור (Java)
A a1 = new B(5);
a1._x = 10;
כך זה ייראה בטיוטה
A a1 = B
  _x : 5 10

הסבר: הטיפוס בזמן קומפילציה הוא A, והטיפוס בזמן ריצה הוא B. התכונה _x אותחלה ל-5, ולאחר מכן עודכנה ל-10.

דוגמה 2: שינוי הטיפוס הדינמי

קוד מקור (Java)
A myVar = new C();
// ... קוד נוסף ...
myVar = new D(11);
כך זה ייראה בטיוטה
A myVar = C D
  _y : 11

הסבר: הטיפוס הדינמי משתנה מ-C ל-D תוך כדי ריצה. הטיפוס הסטטי (A) נשאר קבוע. התכונות מתחת מתעדכנות בהתאם לאובייקט החדש שנוצר.