معنى Object oriented programming – OOP

مفهوم – مصطلح دارج وشائع للغاية لكل مبرمج أو من بدء في تعلم البرمجة، وهو البرمجة كائنية التوجه أو البرمجة الشيئية Object-oriented programming – OOP.

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

ويُبنى البرنامج بواسطة استخدام الكائنات وربطها مع بعضها البعض وواجهة البرنامج الخارجية باستخدام هيكلية البرنامج وواجهات الاستخدام الخاصة بكل كائن.

البرمجة الكائنية OOP – Object oriented programming

هي عبارة عن نمط برمجة متقدمة، وفيه يقسم البرنامج إلى وحدات تسمى الكائنات (Objects)، كل كائن عبارة عن حزمة من البيانات والمتغيرات والثوابت والدوال ووحدات التنظيم وواجهات الاستخدام.

ويتم بناء البرنامج بواسطة استخدام الكائنات وربطها مع بعضها البعض وواجهة البرنامج الخارجية باستخدام هيكلية البرنامج وواجهات الاستخدام الخاصة بكل كائن.

ماهو الكائن؟

لعل كل ما نراه في حياتنا اليومية من بشر وفواكه وحيوانات ووو هو كائن “object”…. , لو نظرنا لفئة الحيوانات مثلا فالأسد والنمر والغزال والأرنب كلٌ منهم يمثل كائناً مستقلا بذاته, و له خصائص تميزه عن الآخر , ويقوم بسلوكيات ووظائف.

إذن لكل كائن خصائص يتميّز بها و سلوكيات يقوم بها ومن هذه السلوكيات تنتج أحداث، وبهذه الثلاث عوامل يتميز كل كائن عما سواه:

خصائص properties: وهي ما نسميه في البرمجة Data.

سلوكيات behavior أو وظائف يقوم بها: وهي ما نسميه بلغة البرمجة Methods or Functions.

أحداث Events: تخص الكائن وتنتج عن سلوكياته! وكل كائن ( object ) ينتمي لفئة أعلى منه (class) فمثلا الفراولة هو كائن وهو ينتمي لفئة الفواكه, الأسد هو كائن وينتمي لفئة الحيوانات, السيارة والطائرة والسفينة هي كائنات وهي تنتمي للفئة التي هي وسائل النقل وهكذا …

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

فهنالك قاعدة تقول ان كل شي عبارة عن كائن – Every things is an Object

فلو اخذناها على لغة جافا java يعني ان كل شئ في لغة جافا عبارة عن كائن مثل المتغيرات والكلاسات والدوال وغيرها..

اما لو طبقناها على واقعنا يعني كل شئ عبارة عن كائن مثل السيارة او الهاتف او الانسان ..الخ .. وان لكل كائن له خصائص وافعال مثلاً الهاتف الذكي له خصائص مثل اللون (احمر,اسود,ازرق..) وله افعال مثل الاتصال وامور كثيرة تساعدنا في حياتنا اليومية.

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

سي++
جافا
بايثون
دلفي (لغة برمجة)
سي شارب
الجافا سكربت
php
Dart

البرمجة الكائنية عبارة عن نمط برمجة متخصص في المفاهيم التالية:

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

الكائنات Objects – حزم وتعليب البيانات والطرق الوظيفية معاً في وحدات تعمل ضمن برنامج نشط. الكائنات هي أساس هيكلية برمجة الحاسوب الكائنيّة.

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

اقرأ ايضًا:

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

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

تعدد الأوجه Polymorphism – بدلاً من استدعاء الإجراءات الفرعية مباشرة، تستطيع البرمجة الشيئية إرسال رسائل، الإجراء المعين الذي يتم نداؤه نتيجة الرسالة يعتمد على نوع الكائن الذي أُرسل له.

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

الوراثة – يستطيع الكائن وراثة خصائص كائن معين والزيادة عليها دون أن يتأثر الكائن الأصلي، فقد يكون هناك كائن «مركبة» فيه الخصائص العامة لكل المركبات مثل الاسم واللون ورقم التسجيل.

الكائن «الطائرة» ممكن أن يرث الكائن «مركبة» ويضيف عليه خصائص «الطائرة»، كذلك يمكن أن يكون هناك مثلاً كائن «مربع» فيه خصائص الطول والعرض ويمكن للكائن «مكعب» أن يرث من «المربع» ويضيف عليه خصائص العمق والحجم.

شاركها

This Post Has One Comment

  1. Linuex

    جميل

اترك تعليقاً