مقدمة شاملة إلى البرمجة الكائنية (OOP) بلغة Python: مفاهيم وأمثلة عملية

Amine
26/08/2024

مقدمة إلى البرمجة الكائنية (OOP): المفاهيم الأساسية مع أمثلة عملية

البرمجة الكائنية (Object-Oriented Programming) هي نموذج برمجي يعتمد على تنظيم الكود حول الكائنات، حيث تعبر هذه الكائنات عن كيانات تحتوي على بيانات وسلوكيات محددة. في هذا المقال، سنشرح المفاهيم الأساسية للبرمجة الكائنية، مثل الكائنات، الكلاسات، التغليف، الوراثة، وتعدد الأشكال، مع أمثلة برمجية توضيحية بلغة Python.

1. الكائنات (Objects)

الكائن هو العنصر الأساسي في البرمجة الكائنية. يمثل الكائن كيانًا يحتوي على خصائص وسلوكيات. على سبيل المثال، يمكن أن يكون الكائن سيارة تحتوي على خصائص مثل العلامة التجارية والطراز، ويمكنه القيام بسلوكيات مثل التشغيل أو الإيقاف.

class Car:
    def __init__(self, brand, model):
        self.brand = brand
        self.model = model

    def start(self):
        print(f"The {self.brand} {self.model} is starting.")

my_car = Car("Toyota", "Corolla")
my_car.start()  # Output: The Toyota Corolla is starting.

في هذا المثال، my_car هو كائن تم إنشاؤه باستخدام الكلاس Car، ويعبر عن سيارة ذات علامة تجارية معينة وسلوك تشغيل.

2. الكلاسات (Classes)

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

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")

# إنشاء كائن
person1 = Person("Alice", 30)
person1.greet()  # Output: Hello, my name is Alice and I am 30 years old.

في هذا المثال، Person هو كلاس يمثل شخصاً، ويمكن استخدامه لإنشاء كائنات تمثل أشخاصاً مختلفين.

3. التغليف (Encapsulation)

التغليف هو إخفاء البيانات داخل الكلاس بحيث لا يمكن الوصول إليها مباشرة من خارج الكلاس. يتم التحكم في الوصول إلى البيانات عبر طرق مخصصة.

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

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

    def get_balance(self):
        return self.__balance

# استخدام الكلاس
account = BankAccount(1000)
account.deposit(500)
print(account.get_balance())  # Output: 1500

في هذا المثال، تم إخفاء خاصية __balance، ولا يمكن الوصول إليها إلا عبر الطرق deposit و get_balance.

4. الوراثة (Inheritance)

الوراثة هي ميزة تتيح إنشاء كلاس جديد يعتمد على كلاس موجود مسبقاً، مما يتيح للكلاس الجديد وراثة الخصائص والسلوكيات من الكلاس الأصلي وإضافة ميزات جديدة.

class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        return f"{self.name} says Woof!"

class Cat(Animal):
    def speak(self):
        return f"{self.name} says Meow!"

# إنشاء كائنات
dog = Dog("Buddy")
cat = Cat("Whiskers")
print(dog.speak())  # Output: Buddy says Woof!
print(cat.speak())  # Output: Whiskers says Meow!

في هذا المثال، Dog و Cat هما كلاسات فرعية (Subclasses) ترث من الكلاس الأساسي Animal.

5. تعدد الأشكال (Polymorphism)

تعدد الأشكال يعني أن نفس الطريقة يمكن أن يكون لها سلوكيات مختلفة بناءً على الكائن الذي يستدعيها. الكائنات المختلفة يمكن أن تستجيب لنفس الطريقة بطرق مختلفة.

class Shape:
    def area(self):
        pass

class Rectangle(Shape):
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def area(self):
        return self.width * self.height

class Circle(Shape):
    def __init__(self, radius):
        self.radius = radius

    def area(self):
        return 3.14 * self.radius ** 2

# استخدام تعدد الأشكال
shapes = [Rectangle(5, 10), Circle(7)]
for shape in shapes:
    print(shape.area())  
    # Output: 
    # 50 (مساحة المستطيل)
    # 153.86 (مساحة الدائرة)

في هذا المثال، تم استخدام تعدد الأشكال من خلال استدعاء نفس الطريقة area على كائنات مختلفة (مستطيل ودائرة) حيث تعطي نتائج مختلفة بناءً على نوع الكائن.

الخاتمة

البرمجة الكائنية (OOP) تساعد في تنظيم الكود بشكل أكثر فعالية وقابلية لإعادة الاستخدام. باستخدام مفاهيم مثل الكلاسات، الكائنات، التغليف، الوراثة، وتعدد الأشكال، يمكنك كتابة برامج أكثر تنظيماً وقابلة للصيانة.

التعليقات

اترك تعليقاً