On this page
מערך שיעור: ירושה — virtual ו-override
משך: 2 שעות אקדמיות (90 דקות).
מטרת השיעור: הסטודנטים יבינו מתי ירושה מתאימה, וישתמשו נכון ב-virtual/override/base.
בסוף השיעור הסטודנטים צריכים: להגדיר היררכיית ירושה פשוטה, לשכתב מתודה עם override, ולהשתמש ב-base גם בקונסטרוקטור וגם במתודה.
דגש קריטי: הדגישו את מבחן “הוא-סוג-של” (is-a) לזיהוי מתי ירושה מתאימה — Manager הוא-סוג-של Employee; Car הוא לא סוג-של Engine.
מהלך השיעור
| חלק בשיעור | משך | הערות ודגשים |
|---|---|---|
| פתיחה וחיבור | 5 דקות | הראו קוד עם Employee ו-Manager שמשכפל את כל השדות |
| הבעיה: כפילות קוד | 10 דקות | “מה קורה אם צריך להוסיף שדה ל-Employee? כמה מקומות לעדכן?” |
| הרעיון: ירושה | 15 דקות | class Manager : Employee, קבלת שדות אוטומטית |
| base בקונסטרוקטור | 15 דקות | הראו שגיאה בלי base(…), ואז עם |
| virtual/override | 20 דקות | Describe בדוגמה, הדגישו שבלי virtual אי אפשר לשכתב |
| base במתודה | 10 דקות | הראו הרחבה של ההתנהגות במקום שכתוב מלא |
| תרגול מודרך | 15 דקות | תרגיל 1+2 |
דגשים להעברת השיעור
- מבחן “הוא-סוג-של” הוא הכלי המעשי ביותר להחליט מתי ירושה מתאימה — תרגלו אותו על כמה דוגמאות טובות ורעות בכיתה (Dog:Animal טוב; Car:Engine רע).
- אל תתנו לירושה להיראות “בחינם” — ציינו בקצרה (בלי להעמיק) שירושה עמוקה מדי היא bad smell נפוץ, ושבהמשך הקורס (SOLID) יידונו חלופות.
- הדגמה חיה של שגיאת קומפילציה כשמנסים override בלי virtual משאירה רושם חזק מאוד.
מושגים
Base Class — המחלקה שממנה יורשים.
Derived Class — המחלקה שיורשת.
virtual — מסמן מתודה כניתנת לשכתוב.
override — שכתוב מתודה virtual במחלקה יורשת.
base — גישה למימוש/קונסטרוקטור של מחלקת הבסיס.
תרגיל חשיבה
שאלת פתיחה: “האם Square (ריבוע) צריך לרשת מ-Rectangle (מלבן)? מה יכול להשתבש?”
מהלך: שאלה קלאסית ב-OOP. תנו לסטודנטים לחשוב — מתמטית ריבוע הוא מלבן מיוחד, אבל אם Rectangle חושפת Width/Height נפרדים שאפשר לשנות באופן עצמאי, Square שיורש ממנה “שובר” את האילוץ שרוחב=גובה. זו דוגמה מצוינת לכך ש"הוא-סוג-של" מתמטי לא תמיד = “הוא-סוג-של” תכנותי טוב.
מה המרצה מראה בסוף: אם יש זמן, ממשו בקצרה Square : Rectangle עם override ל-Width/Height שמסנכרן את שניהם יחד — והראו כמה זה מסורבל ושביר, כהדגמה חיה לדילמה שדיברתם עליה.