2.2.3. מבני נתונים מופשטים – ADT

מושג ה-ADT הוא המושג הקרוב ביותר לאובייקט אליו ניתן להגיע בשפת C.

תזכורת: ADT הינו רעיון של הגדרת טיפוס ופעולות עליו. אנו מגדירים מבנה (struct) המכיל משתנים, ומגדירים אוסף פונקציות (פעולות) המתאימות למבנה זה. האדם המשתמש ב-ADT משתמש בפונקציות שהגדרנו כדי להתעסק עם משתנים מהסוג החדש.

התכונות האובייקטליות של ADT:

  • ניתן ליצור מספר אלמנטים מסוג ADT מסויים. נזהה בין האלמנטים (האובייקטים) השונים, על ידי השוואת הכתובת של כל אחד מהם.
  • התנהגות האובייקטים מוגדרת על ידי הפונקציות שהוגדרו ב-ADT.
  • מצב כל אובייקט נשמר כמשתנים במופע של ה-struct שהוגדר על ידי ה-ADT.

דוגמא ל-ADT: הסוג FILE הינו struct שלו פונקציות שרות המספקות פעולות: פתיחה, סגירה, כתיבה וכו'.

מאת: ניצן

Borland style vptr

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