🔥 أحدث الأخبار

موقع يهتم بكل ماهو جديد في عالم التكنولوجيا والرياضة

كورس C++ المتقدم – الحلقة الثامنة: Advanced OOP & Design Patterns

 

كورس C++ المتقدم – الحلقة الثامنة: Advanced OOP & Design Patterns

#برمجة

مقدمة

مرحباً بك في الحلقة الثامنة من المستوى المتقدم في C++.

في الحلقات السابقة تعلمنا:

  • STL المتقدم (map, set, algorithms)
  • File Handling
  • Multithreading
  • Smart Pointers
  • Templates و Lambdas

اليوم ندخل إلى مرحلة مهمة جداً في البرمجة الاحترافية:

Advanced OOP (البرمجة الكائنية المتقدمة)

ثم نبدأ أول لمحة عن:

Design Patterns


ما هي OOP؟

البرمجة الكائنية تعني:

تنظيم البرنامج على شكل كائنات (Objects)


أساسيات OOP

  • Class
  • Object
  • Encapsulation
  • Inheritance
  • Polymorphism

أولاً: Inheritance المتقدم

الفكرة

كلاس يرث خصائص كلاس آخر


مثال بسيط

#include <iostream>
using namespace std;

class Animal
{
public:
    void eat()
    {
        cout << "Eating..." << endl;
    }
};

الوراثة

class Dog : public Animal
{
public:
    void bark()
    {
        cout << "Barking..." << endl;
    }
};

الاستخدام

int main()
{
    Dog d;

    d.eat();
    d.bark();

    return 0;
}

الناتج

Eating...
Barking...

أنواع الوراثة

النوع المعنى
public الحفاظ على الصلاحيات
private إخفاء الخصائص
protected محدود داخل الوراثة

ثانياً: Polymorphism (تعدد الأشكال)

الفكرة

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


مثال

class Animal
{
public:
    virtual void sound()
    {
        cout << "Animal sound" << endl;
    }
};

كلاس مشتق

class Dog : public Animal
{
public:
    void sound() override
    {
        cout << "Bark" << endl;
    }
};

الاستخدام

int main()
{
    Animal* a;

    Dog d;

    a = &d;

    a->sound();

    return 0;
}

الناتج

Bark

ما معنى virtual؟

تعني:

اختيار الدالة أثناء التشغيل (Runtime)


ثالثاً: Abstraction

الفكرة

إخفاء التفاصيل وإظهار المهم فقط


مثال

class Shape
{
public:
    virtual void draw() = 0;
};

كلاس مشتق

class Circle : public Shape
{
public:
    void draw()
    {
        cout << "Drawing Circle" << endl;
    }
};

الاستخدام

int main()
{
    Circle c;
    c.draw();

    return 0;
}

ما معنى = 0 ؟

يعني:

دالة افتراضية خالصة (Pure Virtual Function)


رابعاً: Interfaces (في C++)

لا يوجد Interface رسمي، لكن يتم باستخدام Abstract Class.


مثال

class IShape
{
public:
    virtual void draw() = 0;
};

خامساً: Design Patterns

ما هي؟

حلول جاهزة لمشاكل متكررة في البرمجة


1) Singleton Pattern

الفكرة

كائن واحد فقط في البرنامج


مثال

class Singleton
{
private:
    static Singleton* instance;

    Singleton() {}

public:
    static Singleton* getInstance()
    {
        if(instance == nullptr)
        {
            instance = new Singleton();
        }
        return instance;
    }
};

Singleton* Singleton::instance = nullptr;

الاستخدام

int main()
{
    Singleton* s1 = Singleton::getInstance();
    Singleton* s2 = Singleton::getInstance();

    return 0;
}

لماذا Singleton؟

✔ قاعدة بيانات واحدة
✔ إعدادات البرنامج
✔ إدارة الاتصال


2) Factory Pattern

الفكرة

إنشاء كائنات بدون معرفة النوع مباشرة


مثال

class Animal
{
public:
    virtual void sound() = 0;
};

كائنات

class Dog : public Animal
{
public:
    void sound()
    {
        cout << "Bark";
    }
};

class Cat : public Animal
{
public:
    void sound()
    {
        cout << "Meow";
    }
};

Factory

class AnimalFactory
{
public:
    static Animal* create(string type)
    {
        if(type == "dog")
            return new Dog();

        if(type == "cat")
            return new Cat();

        return nullptr;
    }
};

الاستخدام

int main()
{
    Animal* a = AnimalFactory::create("dog");

    a->sound();

    return 0;
}

لماذا Factory؟

✔ فصل الكود
✔ مرونة عالية
✔ سهولة التوسع


مقارنة OOP المتقدم

المفهوم الوظيفة
Inheritance إعادة استخدام الكود
Polymorphism سلوك مختلف
Abstraction إخفاء التفاصيل
Interface تحديد قواعد

أخطاء شائعة

❌ نسيان virtual
❌ عدم استخدام override
❌ إنشاء كائن من Abstract Class
❌ تسريب ذاكرة في Factory


تمرين 1

أنشئ كلاس Animal مع Inheritance.


تمرين 2

طبق Polymorphism على sound().


تمرين 3

اصنع Abstract Class لشكل هندسي.


تمرين 4

أنشئ Singleton لإعدادات البرنامج.


تمرين 5

اصنع Factory لإنشاء سيارات (Car, Bike).


ملخص الحلقة الثامنة

تعلمنا:

  • Inheritance المتقدم
  • Polymorphism الحقيقي
  • Abstraction
  • Abstract Classes
  • Singleton Pattern
  • Factory Pattern
  • أساسيات تصميم البرمجيات

في الحلقة التاسعة سنتعلم:

🔥 Modern C++ Features (C++11/14/17/20)

وسنتعرف على:

  • auto
  • range-based loops
  • nullptr
  • smart improvements
  • structured bindings
  • optional / variant
  • writing modern clean C++ 🚀

تعليقات

💬 🙋🏻‍♂️