ערכתי לאחרונה בתאריך 06.01.04 בשעה 14:57 בברכה, dryice
ואילו ממש על קצה המזלג:-העמסת פונקציות: כאשר יש לנו שני פונקציות באותו שם הנבדלות
זאת מזאת בפרמטרים שהן מקבלות ו/או בערך ההחזרה שלהן.
(ב++C אסור ליצור פונקציות הנבדלות רק בטיפוס ערך החזרה, משום
שהגזירה מתבססת על דקדוק חסר הקשר, לא ניתן לפתור את הambiguity)
בהורשה לעיתים גם משתמשים במונח העמסה, בשביל להסביר Overriding מה שיכול ליצור בלבול עם המונח המדויק יותר להעמסה
Overloading
-העמסת אופרטורים: אותו דבר כמו לגבי פונקציות כלליות אלא לגבי
פונקציות מיוחדות שהן גם אופרטורים כמו למשל אופרטור החיבור+
או אופרטור הכפל *, אלו הן פונקציות לכל דבר ועל כן שפות
כמו ++C מאפשרות להעמיס אותן, לכתוב אופרטור כפל משלי,
הרבה פעמים משתמשים במונח העמסת אופרטורים גם כאשר כותבים
רק אופרטור אחד מכל סוג.
-הורשה: בתכנות מונחה עצמים לכל טיפוס הנקרא מחלקה, יש אוסף
של תכונות, יש לו אלמנטים של מידע הקרויים data members
ויש פונקציות הקשורות עליו הנקראים מתודות או member functions
ישנה אפשרות להגדיר מחלקה חדשה על סמך מחלקה קודמת, כך
שהיא תהיה דומה לה, ותירש ממנה את כל התכונות הנ"ל המתודות
והמשתנים הפנימיים. למחלקה החדשה יכולים להיות תכונות נוספות
וכן אפשר יהיה לשנות תכונות קודמות overriding ע"י להגדיר
מחדש פונקציות שכבר הוגדרו לעיל. יש שפות שמאפשרות לרשת מנשק
בנפרד מהמימוש יש שפות שעם יורשים המנשק יורשים גם המימוש
אלא אם כן דורסים אותו(overriding). ב++C יש 3 סוגי הורשה
הנפוצה שבהן הורשת public מבטאת את היחס is a כלומר אוביקטים
מהמחלקה היורשת הם בעצם גם אוביקטים מהמחלקה האם, ויכולים
לתפקד ככאלו.
-polymorphism: או בעברית רב-צורניות, זאת היכולת לגרום לקטע
קוד אחד לתפקד במגוון דרכים שונות ובסיטואציות שונות.
הורשה וtemplates הם שני אמצעים להשגת רב צורניות.
-templates: או בעברית תבניות, זאת דרך לכתוב קטע קוד גנרי
שיעבוד עבור מגוון מחלקות שונות או קבועים שונים, ולו רק
שלמחלקות הנדרשות יוגדרו המתודות שיש בהם שימוש. ניתן להגדיר
מתודה או מחלקה כtemplate עבור כל שימוש שונה בתבנית למעשה
נוצר עותק חדש של הקוד והוא מקומפל מחדש, זה יכול להצליח
או לא להצליח. ההסבר הנ"ל לגבי תבניות נכון ל++C בשפות אחרות
זה נראה אחרת קצת.
-Exceptions: או בעברית חריגות, שיטה שנועדה לטיפול בשגיאות
אולם יש המשתמשים בה למטרות אחרות. חריגה יכולה להזרק ולהתפס.
משתמשים בזה בשביל לזהות ארוע במקום אחד בקוד ואילו לטפל בו
באחת מהפונקציות הקוראות כאשר לא צריך לדעת איזו מהם תטפל
בחריגה ואיך. מגדירים על בלוק מסוים שעשויה להתבצע בו חריגה
ומגדירים עבור סוגי חריגות שונים את הטיפול בהם. כאשר
מזהים את החריגה זורקים חריגה מעלה, כלומר רצף ההרצה הרגיל
של התוכנית נתקע והחריגה מטיילת לה מעלה במעלה מחסנית הקריאות
עד אשר נמצא הבלוק הקולט שיודע לטפל בה. אם לא נמצא כזה
התוכנית תסתיים.
DRYICE
נ.ב
הקשר בין חריגות לOOP נשגב מעיני, חריגות יש אפילו בLISP
שהיא שפת הדגל לשפות פונקציונליות, ממש לא OO.