📚

יסודות של תכנות מונחה עצמים ב-C++

May 7, 2025

תכנות מונחה עצמים (OOP) ב-C++

מבוא ל-OOP

  • OOP היא תבנית תכנות המבוססת על מושג ה"אובייקטים".
  • אובייקטים יכולים להכיל נתונים, בצורת שדות (תכונות) וקוד, בצורת פרוצדורות (שיטות).

מושגים מרכזיים ב-OOP

  • תכונות ושיטות
    • תכונות (חברי נתונים): משתנים המכילים נתונים ספציפיים למחלקה או לאובייקט.
    • שיטות (פונקציות חברים): פונקציות המגדירות את ההתנהגות של אובייקטים.

יסודות של C++

  • C++ היא שפת תכנות מונחית עצמים התומכת ביצירה וניהול של אובייקטים.
  • מחלקות ואובייקטים הם יסודיים ל-C++.

מחלקות ואובייקטים

  • מחלקה: תבנית ליצירת אובייקטים. מגדירה טיפוס נתונים על ידי איגוד נתונים ושיטות שפועלים על הנתונים.
  • אובייקט: מקרה של מחלקה.
    • דוגמה: class Rect { int length; int width; void printArea(); };

מגבילי גישה

  • ציבורי (Public): חברים נגישים מחוץ למחלקה.
  • פרטי (Private): חברים אינם יכולים להיגשת מחוץ למחלקה.
  • מוגן (Protected): חברים נגישים בתוך המחלקה ועל ידי מחלקות יורשות.

עבודה עם מחלקות ב-C++

  • הצהרה והגדרה:
    • הצהרה: class ClassName { //members };
    • הגדרה: פה מתבצע המימוש של הפונקציות.

בונים והורסים

  • בונה: פונקציה מיוחדת שנקראת כאשר אובייקט נוצר.
  • הורס: פונקציה מיוחדת שנקראת כאשר אובייקט נהרס.

פונקציות אינליין

  • מוגדרות בתוך מחלקה ומיועדות לפונקציות קטנות שמשתמשים בהן לעיתים קרובות לשיפור ביצועים.

גטרים וסטטרים

  • שיטות המשמשות לאחזור ועדכון חברי נתונים פרטיים.
  • דוגמה: int getLength() { return length; } void setLength(int myLength) { length = myLength; }

מבנה מול מחלקה

  • Struct: מגביל הגישה ברירת המחדל הוא ציבורי.
  • Class: מגביל הגישה ברירת המחדל הוא פרטי.

קבצי כותרת וקוד מקור

  • קובץ כותרת (.h): מכיל הכרזות של פונקציות ומשתנים.
  • קובץ מקור (.cpp): מכיל את המימוש של הפונקציות.

הוראות קדם-מעבד

  • משמשות לכלילת קבצים (#include), הגדרות מאקרו (#define), וקומפילציה מותנית (#ifdef).

תוכניות לדוגמא

  • תוכנית מספרים רציונליים:
    • מראה הגדרת מונים ומכנים, צמצום שברים וכפל שברים.
    • משתמשת בחברי נתונים פרטיים ושיטות ציבוריות לפעולות.

כימוס והפשטה

  • כימוס: איגוד נתונים עם שיטות הפועלות על הנתונים.
  • הפשטה: הסתרת המציאות המורכבת תוך חשיפת רק החלקים הנחוצים.

רכיבים מעשיים

  • קישור וקומפילציה: הבנת איך המהדר ממיר קוד מקור לקוד מכונה.
  • קדם-מעבד: מורה למהדר לעבד הוראות מסוימות לפני הקומפילציה האמיתית.

הערות חשובות

  • שימוש ב-#ifdef ו-#endif להבטיח שכוללים קבצי כותרת רק פעם אחת.
  • #pragma once הוא אלטרנטיבה למנגנון #ifndef / #define / #endif למניעת כלילה מרובה.

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