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