مقارنة المصطلحات في OOP
| المصطلح | الوصف | مثال |
|---|---|---|
| Class | القالب/المخطط | class Car: |
| Object/Instance | نسخة من الـ Class | my_car = Car() |
| Attribute | خاصية الكائن | self.color = "أحمر" |
| Method | دالة داخل Class | def start(self): |
| __init__ | Constructor - ينشئ الكائن | def __init__(self): |
| self | مرجع الكائن الحالي | self.name = name |
## البرمجة كائنية التوجه (OOP)
OOP هي طريقة لتنظيم الكود باستخدام **الفئات (Classes)** و**الكائنات (Objects)**.
### المفاهيم الأساسية: - **Class**: قالب أو مخطط لإنشاء كائنات - **Object**: نسخة من الـ Class - **Attribute**: خاصية تصف الكائن - **Method**: دالة داخل الـ Class
### مثال حقيقي: - الـ Class: "سيارة" (القالب) - الـ Object: سيارتك أو سيارة صديقك (نسخة محددة) - Attributes: اللون، الموديل، السرعة - Methods: ابدأ، أوقف، ارفع السرعة
| 1 | # تعريف Class |
| 2 | class Dog: |
| 3 | # Class attribute (مشترك لكل الكائنات) |
| 4 | species = "Canis lupus familiaris" |
| 5 | |
| 6 | # Constructor |
| 7 | def __init__(self, name, age): |
| 8 | self.name = name # Instance attribute |
| 9 | self.age = age |
| 10 | |
| 11 | # Method |
| 12 | def bark(self): |
| 13 | return f"{self.name} يقول: هاو!" |
| 14 | |
| 15 | # إنشاء Objects |
| 16 | dog1 = Dog("ريكس", 3) |
| 17 | dog2 = Dog("لونا", 5) |
| 18 | |
| 19 | print(dog1.bark()) # ريكس يقول: هاو! |
| 20 | print(dog2.name) # لونا |
مثال 1: Class بسيطة
| 1 | class Student: |
| 2 | """تمثل طالباً في المدرسة""" |
| 3 | |
| 4 | school = "مدرسة النيل" # class attribute |
| 5 | |
| 6 | def __init__(self, name, grade, score): |
| 7 | self.name = name |
| 8 | self.grade = grade |
| 9 | self.score = score |
| 10 | |
| 11 | def get_status(self): |
| 12 | return "ناجح" if self.score >= 50 else "راسب" |
| 13 | |
| 14 | def info(self): |
| 15 | return f"{self.name} - الصف {self.grade} - {self.score} - {self.get_status()}" |
| 16 | |
| 17 | # إنشاء طلاب |
| 18 | s1 = Student("أحمد", 10, 85) |
| 19 | s2 = Student("سارة", 11, 45) |
| 20 | |
| 21 | print(s1.info()) |
| 22 | print(s2.info()) |
| 23 | print(f"المدرسة: {Student.school}") |