البرمجة الكائنية (OOP) في Python

ما هي البرمجة الكائنية (OOP)؟

البرمجة الكائنية (Object Oriented Programming) هي أسلوب برمجي يعتمد على تقسيم البرنامج إلى كائنات (Objects)، كل كائن يمثل جزءاً من البرنامج وله خصائص (Attributes) ودوال (Methods) خاصة به. هذا الأسلوب يسهل تنظيم الكود وإعادة استخدامه.

تعريف الكلاس (Class) وإنشاء كائن (Object)

الكلاس هو قالب يُستخدم لإنشاء كائنات. الكائن هو نسخة حية من الكلاس.

class Person:
        def __init__(self, name, age):
                self.name = name      # خاصية الاسم
                self.age = age        # خاصية العمر

        def greet(self):
                print(f"مرحباً، اسمي {self.name} وعمري {self.age} سنة")

# إنشاء كائن من الكلاس
person1 = Person("محمد", 30)
person1.greet()  # استدعاء دالة التحية

شرح الكود:

الوراثة (Inheritance)

الوراثة تسمح بإنشاء كلاس جديد يرث خصائص ودوال كلاس آخر.

class Student(Person):  # Student يرث من Person
        def __init__(self, name, age, student_id):
                super().__init__(name, age)  # استدعاء باني الكلاس الأب
                self.student_id = student_id

        def show_id(self):
                print(f"رقم الطالب: {self.student_id}")

student1 = Student("علي", 22, "S123")
student1.greet()
student1.show_id()

الأنواع المختلفة من الدوال داخل الكلاس

class Math:
        @staticmethod
        def add(x, y):
                return x + y

        @classmethod
        def description(cls):
                print(f"هذا الكلاس اسمه {cls.__name__}")

print(Math.add(5, 3))         # 8
Math.description()            # هذا الكلاس اسمه Math

مصطلحات هامة في OOP

مثال على التغليف (Encapsulation)

class BankAccount:
        def __init__(self, balance):
                self.__balance = balance  # خاصية خاصة (private)

        def deposit(self, amount):
                self.__balance += amount

        def get_balance(self):
                return self.__balance

account = BankAccount(1000)
account.deposit(500)
print(account.get_balance())  # 1500

بهذا نكون قد غطينا أساسيات البرمجة الكائنية في Python بشكل مفصل مع أمثلة عملية. بالتوفيق.