תכנות מונחה עצמים (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++ עם דוגמאות ומסבירה את תפקיד המחלקות, האובייקטים ומגבילי גישה שונים, בנוסף כוללת את מרכיבי התכנות החשובים כמו בונים, הורסים ופונקציות אינליין.