4.3.1. מבוא

סוג חזק יותר של הורשה הינו רב צורתיות. הרעיון של רב צורתיות הינו התנהגות שונה.

שורת קוד פולימורפית: אותה שורת קוד יכולה לעשות דברים שונים במצבים שונים.

מתי נרצה פולימורפיזם? אלגוריתמים כלליים. לדוגמא:

חיפוש איבר X: נתחיל באיבר הראשון. כל זמן שלא הגענו לסוף המכולה – עבור לאיבר הבא. אם מצאת את האיבר המבוקש, החזר אמת. אחרת המשך.

אלגוריתם זה הוא אלגוריתם פולימורפי. אותו קוד של אלגוריתם החיפוש יכול להתאים לאובייקטים מסוגים שונים.

בשפות Dynamically typed כל שורות הקוד הן פולימורפיות (כמעט לפי הגדרה).

בשפות statically typed הקוד מוגבל למשתנים מהסוג שהוגדר בזמן ההידור.

האתגר: השגת פולימורפיות בשפות שהן statically typed, ועל ידי כך להשיג: יכולת ביטוי מורחבת וגם בטיחות בריצת התוכנית.



מאת: ניצן

Borland style vptr

לפי מה שאני מכיר:
"חסרון בגישה זו: גם כאשר איננו משתמשים ב-dynamic binding – אנחנו משלמים במקום"
לא נכון , עבור מחלקה A שאין לה מתודות דינמיות לא יווצר כלל המצביע, ולמשל עבור מחלקה B שיורשת מA פשוט נוסיף בהתחלה את המצביע, ואחרי הבלוק של A את שאר האינפורמציה של B . וככה לא משלמים על מה שלא משתמשים ועקרונות C++ נשמרים.
מה שכן באמת הcasting קצת יותר מסובך....
שיתוף:
| עוד