3.3.2.4. מודל 4 רמות

מודל זה דומה למודל 3 רמות, אבל מכיל בנוסף ל-Meta Class מחלקה נוספת – Meta-Meta Class..

הרעיון במודל זה: Meta-Meta Class היא מחלקה המייצרת מטה-מחלקות. מטה-מחלקה היא סינגלטון המגדיר כיצד יוצרים מחלקה מסוימת.

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

  • אובייקטים השייכים ל-Person הינם instance של המחלקה Person.
  • המחלקה Person היא instance של המחלקה Meta-Person, והיא נורשת מ-Object.
  • המחלקה Meta Person נורשת מהמחלקה Meta-Meta Class והיא גם Instance שלה. מחלקה זו הינה סינגלטון – קיים רק אובייקט אחד שלה – המחלקה עצמה. המחלקה Meta Person מחזיקה אילו משתנים סטטיים וכדו' יהיו במחלקה Person. מתעוררת השאלה: למה להחזיק משתנים סטטיים ב-Meta Person ולא במחלקה Person עצמה?

    התשובה: המשתנים כן יהיו במחלקה Person. במחלקה Meta Person רק מוגדר כיצד יש לייצר את המחלקה Person.
  • Meta-Meta class היא instance של עצמה, והיא יורשת מ-Object.


מאת: ניצן

Borland style vptr

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