2.3.3.1. שליחת הודעות מול קריאה לפונקציות

שליחת הודעה

קריאה לפונקציה

מקבל

אובייקט יעד האחראי לביצוע הפעולה המבוקשת.

תמיד חייב להיות מישהו שיקבל את ההודעה.

לא תמיד קיים מקבל להודעה.

למשל במקרה של fork() או exit().

קישור

לא קשור לגוף פונקציה יחיד בהכרח.

המימוש יכול להיות שונה בהתאם למקבל.

יתכן שהמקבל לא ידוע עד לזמן הריצה.

שם הפונקציה מקושר לגוף פרוצדורה מסויים בצורה חזקה.

סינכרוניזציה

הקריאות יכולות להיות א-סינכרוניות.

הקריאות הן לרוב סינכרוניות.

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

פרוטוקול: הדרך להשיג את ההתנהגות. אנקפסולציה של מושג ההתנהגות

מאת: ניצן

Borland style vptr

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