הקדמה

בניתי אתר זה לסטודנטים אשר נחשפים בפעם הראשונה לאובייקטים,החומר שבאתר מפורש מהספרים הכי טובים בשפת ++c. המושג OOP מהווה ראשי תיבות של object oriented programming ,ובעברית -תכנות מכוון עצמים. oriented. לעיתים פוגשים את המושג עם סיומת קצת שונה ( למשל OOD - object oriented design-עיצוב מונחה אובייקטים, OOA - object oriented analysis - ניתוח מונחה אובייקטים-נושאים שיעניינו מנתחי מערכות).לעיתים סתם פוגשים את המושג OO,שמתייחס באופן כללי ל object המושג object oriented נועד לטפל בבעיית "משבר התוכנה " ,ע"י ארגון נכון יותר של קוד,חסכון בכמות הקוד ,שימוש בקוד קיים והבאת תוכנית לרמה מופשטת יותר,שתהיה קלה יותר לעיצוב ,ניתוח וביצוע ,לעומת מערכת פרוצדורלית רחבת היקף.

רעיון object oriented הוא פשוט : בעוד שבתכנות פרוצדורלי מושם דגש על חלוקה לפונקציות , בתכנות object oriented מושם דגש על המידע (date) שמתרוצץ בתוכנית.אם בתוכנית ב C היינו שואלים את השאלה -אילו פונקציות אנחנו צריכים בתוכנית ,ורק אחר כך התעסקנו במידע שהפונקציות מקבלות,מתחזקות ומייצרות,ב ++C ובתכנות object oriented ,נשאל - מהם "הישויות" (entities) המובילות את התוכנית .בצורה זו המידע מהווה את הבסיס לתוכנית, ועליו ניתן לבצע פעולות - לעומת תכנות פרוצדורלי שבו הפעולות הן העיקר והמידע עצמו הוא משני. "הישות" שמהווה כלי לאחזקת מידע ,אסף של פעולות שניתן לבצע עליו ,נקראת class ובעברית -מחלקה.ה class דומה במהותו לstructure ב- c ,אך בניגוד לstructure ב- c -class ב ++C מכיל גם את הפונקציות שניתן להפעיל את המידע. המחלקות עצמן אינן התוכנית .מסביב להן יש לכתוב תוכנית פרוצדורלית שתשתמש בהן ותייצר עותקים (instances) מהמחלקות השונות -לכל אחד מהעותקים הללו נקרא אובייקט.

שפת ++C ו OOP

התפקיד שיועד ל++C אכן מתבסס על הצורך בעדכון שפת C ומציאת שפה שתתבסס על C ,אך תהיה יותר מ C בשני כיוונים עיקרים:

  1. שיפור נקודות כלליות ב- C ,תוך הרחבת אפשרויות העומדות בפני המתכנת .
  2. הפיכת השפה שתהיה object oriented.

האלמנטים העיקריים ב ++C

האלמנטים העיקריים ב ++C ,מתבססים על חמש מתודולגיות מרכזיות.

  1. ריכוזיות(encapsulation) - התכונה המאפשרת ל ++C לכלול תחת מכנה משותף אחד את כל האלמנטים הקשורים ל"ישות" (entity) תכנותית אחת. תכונה זו מקלה באופן משמעותי על המתכנת לעשות שימוש באותה "ישות" וללמוד אותה באופן מרוכז וברור .כמו כן עוזרת תכונה זו לתחזוקת הקוד,כיוון שקל מאוד להתמצא בקוד שמטפל בנושא מסויים ,כאשר כל ההיבטים הקשורים לטיפול זה ,מרוכזים תחת קורת גג אחת - בתוך אותו CLASS.
  2. הורשה (inheritence) - היכולת להגדיר CLASS חדש בהתבסס על CLASS קיים.מאפשר לחסוך בכתיבת קוד ולהשתמש בקוד קיים.שימושי מאוד במקרים הבאים:
    • כאשר רוצים להוסיף תכונות ל CLASS קיים,אך להמשיך להשתמש גם ב CLASS המקורי בתוכניות אחרות או באותה תוכנית.
    • כאשר הקוד בCLASS המקורי לא מוכר לנו ,ואנו חוששים ששינויים על המקור יולידו שגיאות שנצטרך לטפל בהם, בזמן שרק השירותים של ה-CLASS הקיים מעניניים אותנו.
    • כאשר אין בידנו את הקוד של ה CLASS המקורי.

  3. polymorphism (רב-צורתיות) האפשרות להתייחס לאובייקטים מסוגים שונים באופן זהה,באם יש להם מחלקת בסיס משותפת . אפשרות זו יוצרת תוכניות מאוד קריאות ונוחות לכתיבה ותחזוקה-ניתן להגדיר שירותים שעל כל מחלקה לתת,ולהפעיל שירותים אלו על אובייקט בלי לדעת מהוא בעצם הסוג שלו.
  4. templates (תבניות) כלי היוצר אפשרות לכתוב קוד כללי ,שיתאים לסוגים רבים של משתנים .ניתן למשל לכתוב פונקציית swap אחת שתדע להחליף בין שני משתנים מאותו סוג,עבור צימדי משתנים מכל סוג.
  5. exceptions (חריגות) -מנגנון לטיפול שגיאות בזמן ריצה

מתוך חמשת המתודולוגיות, השלוש הראשונות מאפיינות שפות object oriented באופן כללי ,בעוד השתיים האחרות הינן מתודולוגיות ש ++C הוספה ל-C ,שלא מהיבט ה - object oriented .

הקודם
הבא