الكائن الفوقي
في علم الحاسوب ، يُعرَّف الكائن الفوقي بأنه كائن يُعالج الكائنات الأخرى، أو يُنشئها، أو يصفها، أو يُنفِّذها (بما في ذلك نفسه). يُسمى الكائن الذي ينتمي إليه الكائن الفوقي بالكائن الأساسي. تتضمن بعض المعلومات التي قد يُحددها الكائن الفوقي نوع الكائن الأساسي ، وواجهته ، وفئته ، وأساليبه ، وخصائصه ، وشجرة تحليله ، وما إلى ذلك. تُعد الكائنات الفوقية أمثلة على مفهوم الانعكاس في علم الحاسوب ، حيث يمتلك النظام إمكانية الوصول (عادةً أثناء التشغيل) إلى بنيته الداخلية. يُمكّن الانعكاس النظام من إعادة كتابة نفسه أثناء التنفيذ، وتعديل تنفيذه أثناء تشغيله. [ 1 ]
بروتوكول الكائن الفوقي
يوفر بروتوكول الكائنات الفوقية ( MOP ) المصطلحات ( البروتوكول ) اللازمة للوصول إلى بنية وسلوك أنظمة الكائنات ومعالجتها. تشمل الوظائف النموذجية لبروتوكول الكائنات الفوقية ما يلي: [ 2 ]
- إنشاء أو حذف فئة جديدة
- إنشاء خاصية أو طريقة جديدة
- جعل فئة ما ترث من فئة أخرى ("تغيير بنية الفئة")
- قم بإنشاء أو تغيير الكود الذي يحدد أساليب فئة ما
يتعارض بروتوكول الكائنات الوصفية مع مبدأ الانفتاح/الإغلاق لبرتراند ماير ، الذي ينص على أن أنظمة الكائنات البرمجية يجب أن تكون مفتوحة للتوسيع ولكنها مغلقة للتعديل . يميز هذا المبدأ فعليًا بين توسيع الكائن بإضافة عناصر إليه، وتعديله بإعادة تعريفه، مقترحًا أن الأولى صفة مرغوبة ("يجب أن تكون الكائنات قابلة للتوسيع لتلبية متطلبات حالات الاستخدام المستقبلية")، بينما الثانية غير مرغوبة ("يجب أن توفر الكائنات واجهة مستقرة غير قابلة للمراجعة السريعة"). على النقيض من ذلك، يكشف بروتوكول الكائنات الوصفية بشفافية عن التركيب الداخلي للكائنات ونظام الكائنات بأكمله من خلال النظام نفسه. عمليًا، هذا يعني أن المبرمجين قد يستخدمون الكائنات لإعادة تعريف نفسها، ربما بطرق معقدة للغاية.
علاوة على ذلك، فإن بروتوكول الكائن الفائق ليس مجرد واجهة لتنفيذ "أساسي"؛ بل يتم من خلال بروتوكول الكائن الفائق تنفيذ نظام الكائنات بشكل متكرر من حيث نظام الكائن الفائق ، والذي يتم تنفيذه نظريًا من حيث نظام الكائن الفائق الفائق ، وهكذا حتى يتم تحديد حالة أساسية عشوائية ( حالة متسقة لنظام الكائنات)، مع كون البروتوكول على هذا النحو هو العلاقة الوظيفية المتكررة بين مستويات التنفيذ هذه.
يُتيح تطبيق أنظمة الكائنات بهذه الطريقة إمكانية إعادة تصميم جذرية اختيارية، مما يوفر مرونة كبيرة ولكنه قد يُثير مشكلات عدم استقرار معقدة أو يصعب فهمها (على سبيل المثال، يجب ألا يُحدّث نظام الكائنات بروتوكول الكائن الفائق الخاص به - وهو تمثيله الذاتي الداخلي - بشكل مُدمّر، ولكن من الصعب التنبؤ بالتأثير المُدمّر المحتمل لبعض التحديثات، وقد يصعب تفسيره منطقيًا)، وذلك اعتمادًا على عمق التكرار الذي تنتشر إليه التعديلات المطلوبة. [ 3 ] لهذا السبب، يُستخدم بروتوكول الكائن الفائق، عند وجوده في لغة برمجة، عادةً باعتدال ولأغراض مُتخصصة مثل البرامج التي تُحوّل برامج أخرى أو نفسها بطرق مُعقدة، على سبيل المثال في الهندسة العكسية. [ 4 ]
وقت التشغيل ووقت التجميع
عندما لا تتوفر عملية الترجمة أثناء التشغيل، تظهر تعقيدات إضافية في تطبيق بروتوكول الكائنات الوصفية. على سبيل المثال، من الممكن تغيير تسلسل الأنواع باستخدام هذا البروتوكول، ولكن قد يتسبب ذلك في مشاكل للتعليمات البرمجية المُترجمة باستخدام تعريف بديل لنموذج الفئة. وقد وجدت بعض البيئات حلولًا مبتكرة لهذه المشكلة، مثل معالجة مشكلات الكائنات الوصفية أثناء الترجمة. ومن الأمثلة الجيدة على ذلك OpenC++ . [ 5 ] يتميز نموذج الويب الدلالي الموجه للكائنات بديناميكية أكبر من معظم أنظمة الكائنات القياسية، ويتوافق مع بروتوكولات الكائنات الوصفية أثناء التشغيل. فعلى سبيل المثال، من المتوقع أن تُغير الفئات في نموذج الويب الدلالي علاقاتها ببعضها البعض، وهناك محرك استدلال خاص يُعرف باسم المصنف، والذي يمكنه التحقق من صحة نماذج الفئات المتطورة وتحليلها. [ 6 ]
الاستخدام
كان أول بروتوكول للكائنات الفوقية في لغة البرمجة الكائنية التوجه Smalltalk، التي طُوّرت في مركز أبحاث زيروكس بارك . ثم ظهر نظام كائنات Common Lisp (CLOS) لاحقًا، متأثرًا ببروتوكول Smalltalk، بالإضافة إلى دراسات برايان سي. سميث الأصلية حول 3-Lisp باعتبارها سلسلة لا نهائية من المُقيِّمات. [ 7 ] يُتيح نموذج CLOS، على عكس نموذج Smalltalk، أن يكون للفئة الواحدة أكثر من فئة أساسية واحدة ؛ مما يُضيف تعقيدًا إضافيًا في مسائل مثل تحديد تسلسل الفئات في بعض مثيلات الكائنات. كما يُتيح CLOS أيضًا إرسالًا ديناميكيًا متعدد الأساليب ، والذي يُدار عبر الدوال العامة بدلًا من تمرير الرسائل كما في الإرسال الأحادي في Smalltalk . [ 8 ] يُعد كتاب "فن بروتوكول الكائنات الفوقية" (The Art of the Metaobject Protocol) لغريغور كيتزاليس وآخرون، الكتاب الأكثر تأثيرًا في وصف دلالات وتنفيذ بروتوكول الكائنات الفوقية في Common Lisp . [ 9 ]
تُستخدم بروتوكولات الكائنات الوصفية على نطاق واسع في تطبيقات هندسة البرمجيات. ففي جميع بيئات هندسة البرمجيات بمساعدة الحاسوب (CASE) التجارية تقريبًا، وبيئات إعادة هندسة البرمجيات، وبيئات التطوير المتكاملة، يوجد شكل من أشكال بروتوكولات الكائنات الوصفية لتمثيل عناصر التصميم ومعالجتها. [ 10 ] [ 11 ] [ 12 ]
يُعدّ بروتوكول الكائنات الوصفية أحد أساليب تطبيق البرمجة الموجهة نحو الجوانب . وقد أصبح العديد من مؤسسي بروتوكولات الكائنات الوصفية الأوائل، بمن فيهم غريغور كيتزاليس ، من أبرز الداعمين لهذه البرمجة. وقد تمّ توظيف كيتزاليس وزملاؤه من مركز أبحاث بالو ألتو لتصميم AspectJ للغة جافا ، وهي لغة لا تمتلك بروتوكول كائنات وصفية أصلي.
انظر أيضاً
مراجع
- ↑ سميث، برايان سي (1982-01-01). "الانعكاس الإجرائي في لغات البرمجة" . تقرير فني من معهد ماساتشوستس للتكنولوجيا (MIT-LCS-TR-272). مؤرشف من الأصل في 13 ديسمبر 2015. تم الاطلاع عليه في 16 ديسمبر 2013 .
- ↑ فوت، برايان؛ رالف جونسون (1-6 أكتوبر 1989). "ميزات انعكاسية في سمول توك-80" . وقائع مؤتمر حول أنظمة ولغات وتطبيقات البرمجة كائنية التوجه . ص 327-335 . doi : 10.1145/74877.74911 . ISBN 0897913337تم الاطلاع عليه بتاريخ 16 ديسمبر 2013 .
- ↑ فن بروتوكول الكائن الفائق ، الملحق ج - التعايش مع الدائرية
- ↑ فافر، ليليانا؛ ليليانا مارتينيز؛ كلوديا بيريرا (2009). "الهندسة العكسية للبرمجيات الموجهة للكائنات باستخدام MDA". نمذجة المؤسسات، وعمليات الأعمال، ونظم المعلومات . سلسلة محاضرات في معالجة معلومات الأعمال. المجلد 29. سبرينغر. الصفحات 251-263 . doi : 10.1007/978-3-642-01862-6_21 . ISBN 978-3-642-01861-9.
- ↑ تشيبا، شيغيرو (1995). "بروتوكول الكائنات الوصفية للغة C++" . وقائع المؤتمر السنوي العاشر حول أنظمة ولغات وتطبيقات البرمجة كائنية التوجه . الصفحات 285-299 . doi : 10.1145/217838.217868 . ISBN 978-0897917032. S2CID 3090058 . تم الاسترجاع في 27 ديسمبر 2013 .
- ↑ كنوبلاوخ، هولجر؛ أوبرلي، دانيال؛ تيتلو، فيل؛ والاس، إيفان (9 مارس 2006). "مقدمة في الويب الدلالي لمطوري البرمجيات الموجهة للكائنات" . اتحاد شبكة الويب العالمية . تم الاطلاع عليه بتاريخ 30 يوليو 2008 .
- ↑ دانيال ب. فريدمان؛ ميتشل واند (1988). "كشف لغز البرج: وصف غير عاكس للبرج العاكس". وقائع مؤتمر ACM لعام 1986 حول لغة LISP والبرمجة الوظيفية - LFP '86 . الصفحات 298-307 . doi : 10.1145/319838.319871 . ISBN 978-0897912006. S2CID 7974739 .
- ↑ "دمج البرمجة الكائنية والبرمجة الوظيفية" (ملف PDF) . تم الاطلاع عليه بتاريخ 7 يوليو 2016 .
- ↑ كيتزاليس، غريغور؛ جيم دي ريفيير؛ دانيال ج. بوبرو (30 يوليو 1991). فن بروتوكول الكائن الميتا . مطبعة معهد ماساتشوستس للتكنولوجيا. ISBN 978-0262610742.
- ↑ جونسون، لويس؛ ديفيد ر. هاريس؛ كيفن م. بينر؛ مارتن س. فيذر (أكتوبر 1992). "أريس: جانب المتطلبات/المواصفات لـ KBSA". التقرير الفني النهائي لمختبر روما . RL-TR-92-248.
- ↑ "أصل التحسين" (ملف PDF) . www.metaware.fr . ورقة بيضاء من Metaware. مؤرشفة من الأصل (ملف PDF) بتاريخ 7 يناير 2014. تم الاطلاع عليها بتاريخ 6 يناير 2014 .
- ↑ "مرفق الكائنات الوصفية التابع لمجموعة إدارة الكائنات" . omg.org . مجموعة إدارة الكائنات . تم الاطلاع عليه بتاريخ 7 يناير 2014 .
روابط خارجية
- مواصفات Guile MOP (GOOPS، المستندة إلى Tiny CLOS)
- الكائنات الفوقية وبروتوكول الكائنات الفوقية
- بروتوكول الكائنات الوصفية لنظام كائنات Common Lisp (يحتوي على فصلين من كتاب فن بروتوكول الكائنات الوصفية )
- البرمجة الوصفية في بايثون 2.6
- كائن (علوم الحاسوب)
