4.1. מבוא

הדיון שלנו על הורשה יתחיל מהורשה פשוטה יחסית, ולאחר מכן נציג הורשה שהינה מתוחכמת יותר, אולם גם מעניקה לנו המתכנתים יותר כוח.

אנחנו בד"כ נזהה את ההורשה הפשוטה במצב בו קיימת מחלקה עם עצמים היודעים לבצע פעולה כלשהי, וכן קיימת קבוצת עצמים נוספת היודעים לבצע פעולה זו וקצת יותר. מכאן, בד"כ אנו מגלים את הצורך בהורשה כאשר אנחנו רואים קוד / פונקציות משותפות בשתי מחלקות.

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

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

אפשרות נוספת שהורשה נותנת לנו היא ארגון עצמים בעולם בצורה היררכית, על ידי שימוש בהפשטות מתאימות.

בשפות שונות ישנם מונחים שונים המתאימים למושגים של תכנות מונחה עצמים. נציג מעט טרמינולוגיה, השוואה בין מונחים בשפת C++ למונחים בשפת Little Smalltalk:

C++

Smalltalk

Inherit/Derive

Inherit

Base class

Super Class

Derived class

Subclass

Data Member

Instance Variable

Member Function

Method

Member Function Call

Message

Static Data Member

Class Variable

Static Function Member

Class Method



מאת: ניצן

Borland style vptr

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