يعتقد الكثير من متعلمي لغات البرمجة الجدد أن مفهوم البرمجة الكائنية شيء معقد وصعب التعامل معه، لكن من خلال التعمق في مفهومها ودراستها بشكلٍ جيّد؛ ستلاحظ أنّ البرمجة الكائنية توفر كتابة الكثير من الأكواد البرمجية. وسنتحدث في هذا المقال عن البرمجة كائنية التوجه، وما هي الفئة؟ وما هو الكائن؟
البرمجة كائنية التوجه OOP
هي عبارة عن نمط برمجة متقدم، وفيه يُقسم البرنامج إلى وحدات تسمى كائنات (Objects)، كل كائن عبارة عن حزمة من البيانات والمتغيرات والثوابت والدوال ووحدات التنظيم وواجهات الاستخدام. ويتم بناء البرنامج بواسطة استخدام الكائنات وربطها مع بعضها البعض، وبناء واجهة البرنامج الخارجية باستخدام هيكلية البرنامج وواجهات الاستخدام الخاصة بكل كائن. ولكن ماذا تعني البرمجة كائنية التوجه؟
هي لغة برمجية مُصمّمة للتركيز على الكائنات “objects” والبيانات “data” وتختلف عن غيرها من اللغات التي تُركز على الأوامر والمنطق. أما تاريخياً، فقد تمّ النظر إلى البرنامج على أنه إجراء منطقي يأخذ بيانات المدخلات ويقوم بمعالجتها ليخرج معلومات. إذ نُظِرَ إلى التحدي البرمجي من زاوية “كيفية كتابة المنطق” وليس “كيفية تعريف البيانات”. إذًا فالبرمجة كائنية التوجه تهتم بالكائنات التي نُريد معالجتها أكثر من المنطق المطلوب لمعالجته.
ذكرنا بالأعلى مصطلح الكائن “object”، لكن ما هو تعريفه؟
كل شيء عبارة عن كائن ” Every things is an Object ” هذه القاعدة تعني أن كل شيء تراه في حياتك هو عبارة عن كائن، مثل: السيارة، جهاز الكمبيوتر، الإنسان، الهاتف المحمول … إلى آخره. ولا بد أن كل كائن له خصائص وأفعال. لنأتِ بأبسط الكائنات، السيارة: لها خصائص مثل اللون (أحمر، أسود، أخضر) ومن الأفعال التي تقوم بها: الحركة.
تتراوح الأمثلة على الأشياء/الكائنات بين البشر (الموصوفة بالاسم والعنوان وما إلى ذلك) إلى المباني والأرضيات (التي يمكن وصف خصائصها وإدارتها) وصولاً إلى الحاجيات الصغيرة على سطح المكتب (مثل الأزرار وأشرطة التمرير).
فالبرمجة الكائنية هي طريقة جديدة لتصميم وكتابة البرامج، والفكرة الرئيسية منها هي أن تقوم بتحويل البرنامج إلى أجزاء مختلفة وكل جزء يمثل هدفًا أو عملًا معينًا. الخطوة الأولى في البرمجة كائنية التوجه هي تعريف الكائنات التي يريد المُبرمج معالجتها وكيفية ارتباطها مع بعضها البعض، والإجراءات/التمارين، كتمثيل البيانات: وهي ممارسةٌ غالبًا ما تعرف باسم تمثيل البيانات.
وبمجرد تعريف الكائن يتم تعميمه كفئة من الأشياء (فكر في مفهوم أفلاطون عن الكرسي “المثالي” الذي يُمثّل جميع الكراسي) التي تُحدد نوع البيانات التي تحتوي عليها وأي تسلسل منطقي يُمكن معالجته. ويعرّف كل تسلسل منطقيٍّ متميز كـ: طريقة/أسلوب “method”. وتتواصل الكائنات مع واجهات محددة تسمى: الرسائل.
ولكن ما هي القواعد التي يجب اتباعها في كتابة برنامج “OOP”؟
المفاهيم والقواعد المُستخدمة في البرمجة كائنية التوجه تتلخص في الآتي:
– مفهوم فئة البيانات “data class” يجعل من الممكن تعريف الفئات الفرعية من بيانات الكائنات التي تشترك في بعض أو كل خصائص الطبقة الرئيسية، وتُسمى الميراث “inheritance”، وهذه الخاصية من “OOP” تُجبر على تحليل البيانات بشكلٍ أكثر دقة، وتقلل من وقت التطوير، وتضمن كودًا أكثر دقة.
– وبما أنّ الفئة تحدد فقط البيانات المهمة عند تشغيل جزء من هذه الفئة (الكائن)، فإن البرنامج لن يكون قادرًا على الوصول إلى بيانات البرنامج الأخرى عن طريق الخطأ. وتوفر خاصية إخفاء البيانات مزيدًا من أمن النظام وتُجنب تلف البيانات غير المقصود.
– عند تعريف الفئة يمكن استخدامها مرة أخرى، ليس فقط في البرنامج المُحدد لها، بل يُمكن استخدامها أيضًا من خلال برامج كائنية التوجه، ولهذا السبب يمكن توزيعها بسهولة أكبر للاستخدام في الشبكات.
– مفهوم بيانات الفئات يسمح للمُبرمج إنشاء أي نوع جديد من البيانات التي لم يتم تعريفها بالفعل في اللغة نفسها.
ولكن ما هو الفرق بين الفئة “class” والكائن “object”؟
كما تحدثنا مسبقًا عن الكائن سنتحدث الآن عن الفئة، وهي المخطط أو النموذج الأولي الذي يتم إنشاء الكائنات به. ويحدد هذا القسم الفئة التي تحدد الحالة والسلوك للكائن في العالم الحقيقي. تُمثل الفئة مجموعة “أصناف” من الأشياء التي وصفتها بعض البيانات، ولها نفس السلوكيات “الأنشطة”.
تُعدّ وتخدم الفئة كمخطط للكائن. على سبيل المثال: لدينا فئة الطالب تحدد خصائص من كائناتها، مثل: الاسم، العنوان، التخصص، المعدل التراكمي للبيانات، وتحديث عنوان أو إعادة حساب المعدل التراكمي لأساليب أو أنشطة كل كائن من نوع الفئة التي يستطيع الطالب تنفيذه أو يجب تحقيقه. الكائن من هذا النوع يمكن أن يكون فئة الطالب الفردية في الجامعة. يمكن أن نفكر في أمثلة أخرى كثيرة مثل فئة السيارات، طبقة الطائرة، فئة الثدييات، فئة الحيوان، طبقة الأثاث وأمثلة أخرى كثيرة. وبالتالي، لكي نُعرّف الفئة نحتاج لإعلان البيانات والأساليب التي ينبغي أن تُكوّن كل كائن من هذا النوع.
كانت سيمولا “simula” أول لغة برمجة كائنية التوجه. واللغات الأكثر شعبية للبرمجة كائنية التوجه حاليًا هي:
1- Java
2- Python
3- C++
4- Visual Basic .NET
5- Ruby
صُمّمت لغة البرمجة جافا خصيصًا للاستخدام في التطبيقات الموزعة على شبكات الشركات والإنترنت، وتُستخدم روبي Ruby في العديد من تطبيقات الويب.
يُعقد مؤتمر سنوي لأنظمة البرمجة كائنية التوجه واللغات والتطبيقات، يُطلق عليه أوبسلا “OOPSLA”.
المصادر:
object-oriented programming (OOP)
Object-Oriented Programming Concepts
- إعداد: أحمد سمير.
- مراجعة: أحمد سعد.
- تدقيق لغوي: مروى بوسطه جي.