البرمجة الكائنية (Object-oriented programming) وتُختصر إلى (OOP)، هي نموذج برمجة يعتمد على مفهوم الـ “objects” والـ “classes“.

صورة توضيحية للفرق بين الـ class والـ object:

class (الفئة)

Students

object (الكائن)

Student One

Student tow

Student three


 

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

OOP (البرمجة الكائنية) هي نموذج برمجة يعتمد على مفهوم الفئات”classes” والكائنات”objects“، يتم استخدامه لبناء برنامج برمجي إلى أجزاء بسيطة قابلة لإعادة الاستخدام من مخططات الكود (تسمى عادةً بالـ classes) والتي تُستخدم لإنشاء حالات فردية من الكائنات.

يصمم المبرمج برنامجًا برمجيًا عن طريق تنظيم أجزاء ذات صلة من المعلومات والسلوكيات معًا في قالب يسمى الـ (class)، ثم يتم إنشاء objects فردية من قالب الـ class، يعمل البرنامج بأكمله من خلال وجود كائنات متعددة تتفاعل مع الكائنات لإنشاء برنامج أكبر.

العديد من لغات البرمجة تستخدم البرمجة الكائنية (مثل ++C و Java و Python …..والكثير).


لماذا OOP؟

يجعل الـ OOP الكود منظمًا وقابلًا لإعادة الاستخدام وسهل الصيانة، يتبع مبدأ DRY (أى لا تكرر نفسك) الذي يستخدمه العديد من المبرمجين لإنشاء برامج فعالة.

يمنع OOP أيضًا الوصول غير المرغوب فيه إلى البيانات ، أو كشف رمز الملكية من خلال التغليف والتجريد (encapsulation & abstraction).

💡كيف يقوم المبرمجون بإنشاء برامج كائنية التوجه؟ 

الإجابة المختصرة هي عن طريق إنشاء classes وإنشاء objects من الـ classes، تشكل الفصول مخططًا لكيفية تنظيم البيانات.


ما هي الأساسيات الأربعة للبرمجة الكائنية؟

البرمجة الكائنية لها أربعة مفاهيم أساسية:

  • التغليف Encapsulation
  • التجريد Abstraction
  • الوراثة Inheritance
  • تعدد الأشكال Polymorphism

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

Encapsulation

التغليف Encapsulation هو مفهوم البرمجة الموجه للكائنات تربط البيانات والوظائف التي تتعامل مع البيانات معًا ، وتحميها من التدخل الخارجي وإساءة الاستخدام، أدى تغليف البيانات إلى مفهوم OOP المهم لإخفاء البيانات.

إذا كان الـ class لا يسمح باستدعاء التعليمات البرمجية للوصول إلى بيانات الكائن الداخلية ويسمح بالوصول من خلال الـ methods فقط ، فهذا شكل قوي من أشكال التغليف.

تسمح بعض اللغات مثل Java للفئات بفرض قيود الوصول بشكل صريح ، على سبيل المثال الإشارة إلى البيانات الداخلية بالكلمة الأساسية private وطرق التعيين المخصصة للاستخدام بواسطة كود خارج الـ class باستخدام الكلمة الأساسية public.

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


Abstraction

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

يستخدم المبرمجون التجريد لعدة أسباب مفيدة، بشكل عام يساعد التجريد في عزل تأثير التغييرات التي تم إجراؤها على الكود بحيث إذا حدث خطأ ما ، فلن يؤثر التغيير إلا على المتغيرات المعروضة وليس على الكود الخارجي.

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

فوائد التجريد:

  1. واجهات مستخدم بسيطة وعالية المستوى.
  2. الكود المعقد مخفي.
  3. الأمان (يمكن الوصول إلى الأجزاء المختارة فقط من الكائن).
  4. أسهل صيانة البرامج.

Inheritance

 هل تعرف ما هي المشكلة الشائعة في تصميم OOP؟

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

باستخدام هذا المفهوم (التوريث)، يمكن للمبرمجين توسيع وظائف فئات الكود الموجودة للتخلص من التعليمات البرمجية المتكررة.

على سبيل المثال ، عناصر كود HTML بدلاً من إعادة تعريف الخصائص والأساليب لكل نوع من عناصر HTML ، يمكنك تحديدها مرة واحدة في كائن عام، سيؤدي تسمية هذا الكائن بشيء مثل “HTMLElements” إلى أن ترث الكائنات الأخرى خصائصه وطرقه حتى تتمكن من تقليل التعليمات البرمجية غير الضرورية.

الكائن الرئيسي هو “superclass” وجميع الكائنات التي تتبعها هي “subclasses” + يمكن أن تحتوي الفئات الفرعية(subclasses) على عناصر منفصلة أثناء إضافة ما يحتاجونه من الـ “superclass“.


Polymorphism

تسمح هذه التقنية التي تعني “تعدد الأشكال” للمبرمجين بعرض عناصر HTML متعددة بناءً على نوع الكائن.

يسمح هذا المفهوم للمبرمجين بإعادة تعريف الـ method التي يعمل بها شيء ما عن طريق تغيير كيفية القيام به أو عن طريق تغيير الأجزاء التي يتم بها.

تسمى شروط تعدد الأشكال بـ overriding و overloading.


فوائد البرمجة الكائنية OOP

 

  • يقوم الـ OOP بنمذجة الأشياء المعقدة مثل هياكل بسيطة قابلة للتكرار.
  • كود الـ OOP قابل لإعادة الاستخدام.
  • الـ OOP يمنع تكرار التعليمات البرمجية + يجعل إصلاح الأخطاء أسهل.
  • نظام الـ OOP يحمي المعلومات من خلال تغليف (لا يمكن الوصول إلى بيانات كائن إلا من خلال الـ properties والـ methods الـ public).
  • يستخدم الـ OOP التجريد لجعل المعقد سهل.
  • من السهل العمل مع الـ OOP في فريق من المطورين (يمكن تخصيص الـ classes لمطوريين مختلفين ، مما يسمح لعدة أشخاص بتكويد مشروع في نفس الوقت).

 


 

ملاحظات على البرمجة الكائنية OOP

  1. OOP: كل شيء هو كائن object.
  2. classes هي مخططات للـ objects.
  3. objects هي حالات أو امتدادات من الـ classes.
  4. attributes هي حقول البيانات.
  5. methods هي السلوكيات.
  6. Inheritance: ترث الفئات الفرعية(subclasses) سمات وأكواد من الفئات الأصل (superclasses).
  7. Encapsulation: عرض المعلومات المختارة فقط للأجزاء الخارجية.
  8. Abstraction: إنشاء نموذج بسيط يمثل البيانات والسلوكيات المعقدة.
  9. Polymorphism: تعمل عندما تستطيع الكائنات المتعددة تنفيذ نفس الـ function.