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