البرمجة الكائنية (Object Oriented Programming) هي أسلوب برمجي يعتمد على تقسيم البرنامج إلى كائنات (Objects)، كل كائن يمثل جزءاً من البرنامج وله خصائص (Attributes) ودوال (Methods) خاصة به. هذا الأسلوب يسهل تنظيم الكود وإعادة استخدامه.
الكلاس هو قالب يُستخدم لإنشاء كائنات. الكائن هو نسخة حية من الكلاس.
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() # استدعاء دالة التحية
class Person:
تعريف كلاس باسم Person.__init__
: دالة الباني (constructor) تُنفذ تلقائياً عند إنشاء كائن جديد.self
: تشير للكائن الحالي.greet
: دالة (method) داخل الكلاس.person1 = Person("محمد", 30)
: إنشاء كائن جديد.person1.greet()
: استدعاء دالة من الكائن.الوراثة تسمح بإنشاء كلاس جديد يرث خصائص ودوال كلاس آخر.
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()
super()
: تُستخدم لاستدعاء دوال الكلاس الأب.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
@staticmethod
: دالة لا تعتمد على الكلاس أو الكائن.@classmethod
: دالة تعتمد على الكلاس نفسه وليس الكائن.class
: تعريف الكلاسobject
: الكائن (نسخة من الكلاس)attribute
: خاصية للكائنmethod
: دالة داخل الكلاسinheritance
: الوراثةencapsulation
: التغليف (إخفاء التفاصيل الداخلية)polymorphism
: تعدد الأشكال (إمكانية استخدام نفس الدالة بطرق مختلفة)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
__balance
: خاصية خاصة لا يمكن الوصول لها مباشرة من خارج الكلاس.بهذا نكون قد غطينا أساسيات البرمجة الكائنية في Python بشكل مفصل مع أمثلة عملية. بالتوفيق.