البرمجة الشيئية OOP

اقرأ في هذا المقال


البرمجة الشيئية أو البرمجة الموجهة للكائنات ويطلق عليها أيضاً البرمجة الكائنية، بالإنجليزية (Object-oriented programming) أو (OOP) للاختصار، وهي نموذج برمجة يستخدمه كل مطور تقريبًا في مرحلة ما من حياتهم المهنية، والبرمجة الشيئية هو نموذج البرمجة الأكثر شيوعًا، ويتم تدريسه باعتباره الطريقة النموذجية لكتابة الكود لمعظم مهن المبرمج.

ما هي البرمجة الشيئية OOP؟

البرمجة الشيئية (OOP)، هي نموذج برمجة يعتمد على مفهومي الـ (classes) و الـ (objects)، حيث يتم استخدام البرمجة الشيئية لبناء كود برمجي ذو أجزاء بسيطة قابلة لإعادة الاستخدام، يسمى عادةً (class)، والذي يتم استخدامه لإنشاء (objects) منه، هناك العديد من لغات البرمجة التي تدعم البرمجة الشيئية، بما في ذلك (JavaScript و ++C و Java و Python).

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

مفهوم الـ Class:

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

على سبيل المثال، جميع السيارات تشترك في بعض الخصائص، مثل، أن جميع السيارات لها اسم ولون وتاريخ صنع وحجم للمحرك، وعلامات تجارية، وجميع السيارات لها سلوكيات مشتركة مثل، تغير في السرعة، الضغط على الفرامل، لذا هنا، السيارة هي (class)، وجميع الخصائص المشتركة يمكن وضعهم كبيانات ل (class) السيارة، وجميع السلوكيات المشتركة يمكن وضعهم كدوال ل (class) السيارة.

مفهوم ال Object:

إنها وحدة أساسية من البرمجة الشيئية وتمثل كيانات الحياة الواقعية، الكائن هو مثيل (instance) من (class)، عندما يتم تعريف (class)، لا يتم تخصيص ذاكرة، ولكن عندما يتم إنشاء (object) لها يتم تخصيص الذاكرة، و الـ (object) له هوية وحالة وسلوك، حيث يحتوي كل (object) على بيانات وكود لمعالجة هذه البيانات، يمكن أن تتفاعل (objects) مع بعضها البعض دون الحاجة إلى معرفة تفاصيل بيانات أو كود الـ (object) الآخر، ويكفي معرفة نوع الرسالة المرسلة ونوع الاستجابة التي يُرجعها (objects).

بالرجوع إلى مثال السيارات، فإن لكل سيارة جديدة نستخدمها، سيتم إنشاء (object) من (class) السيارة، ويحمل كل (object) اسم الموديل واللون وحجم المحرك وسنة الصنع كبيانات، على سبيل المثال، يمكن أن يكون لدينا سيارة (BMW) لونها أزرق وسنة الصنع هي (2019)، أو سيارة (Audi) لونها أحمر وسنة الصنع (2020)، في كل الأحوال، سنعيد استخدام الكود الموجود في (class) الأصلي.

فوائد البرمجة الشيئية OOP:

  • قابلة لإعادة الاستخدام، حيث يمكن استخدام (objects) عبر برمجيات متعددة.
  • يسمح بسلوك خاص ب (Class) معين، من خلال تعدد الأشكال (polymorphism).
  • من الأسهل تصحيح الأخطاء البرمجية، غالبًا ما تحتوي (Classes) على جميع المعلومات القابلة للتطبيق عليها.
  • تأمين وحماية المعلومات، من خلال التغليف (Encapsulation).

كيفية هيكلة برامج البرمجة الشيئية OOP:

لنأخذ مشكلة من العالم الحقيقي، ونصممها من الناحية المفاهيمية باستخدام البرمجة الشيئية:

تخيل أنك تدير مركزاً للكلاب، مع مئات الحيوانات الأليفة، وعليك تتبع الأسماء والأعمار والأيام التي يحضرها كل حيوان أليف، كيف تصمم برنامجًا بسيطًا يمكن إعادة استخدامه لنمذجة الكلاب؟ مع وجود مئات الكلاب، سيكون من غير الفعال كتابة كود فريد لكل كلب، وذلك لأنك سوف تكرر الكثير من التعليمات البرمجية، فنظرًا لأننا نريد نفس المعلومات لكل كلب، يمكننا استخدام (Objects) و(classes) بدلاً من ذلك، فيؤدي تجميع المعلومات ذات الصلة معًا لتشكيل (class)، والذي يجعل الكود أقصر وأسهل في الصيانة.

في مثال تربية الكلاب، إليك كيف يمكن للمبرمج التفكير في تنظيم (OOP)، قم بإنشاء (class) لجميع الكلاب كمخطط للبيانات والسلوكيات التي ستكون لدى جميع الكلاب، بغض النظر عن نوعها، وإنشاء (classes) فرعية لتمثيل أنواع الكلاب الفرعية ضمن مخطط الأصل العام، ثم أضف سمات وسلوكيات فريدة إلى (classes) الفرعية لتمثيل الاختلافات، الآن قم بإنشاء (Objects) من (classes) الفرعية، والتي تمثل الكلاب داخل المركز.

المصدر: Object-Oriented Programming ConceptsWhat is Object Oriented Programming? OOP Explained in Depth++Object Oriented Programming in CIntroduction of Object Oriented Programming


شارك المقالة: