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