الفصام (البرمجة الموجهة للكائنات)

يُعدّ انفصام الكائن أو انفصام الذات أحد المضاعفات الناجمة عن التفويض والتقنيات ذات الصلة في البرمجة الكائنية التوجه ، حيث يمكن أن يشير الرمز self/this إلى أكثر من كائن واحد. وبالاستعارة من الخلط الشائع بين اضطراب الهوية الانفصامية وتشخيص الفصام النفسي ، حيث يرتبط الأول بـ"انفصام الشخصية"، يُطلق على هذا التكوين اسم انفصام الكائن أو انفصام الذات في البرمجة الكائنية التوجه. [ 1 ]

ملخص

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

يُعدّ استخدام النماذج الأولية والتفويض بديلاً عن الأصناف والوراثة [ 2 ] ، ويُستخدم في البرمجة القائمة على النماذج الأولية ، وهو أكثر ديناميكية. فبدلاً من استخدام صنف لتحسين صنف آخر، يسمح التفويض لكائن ما بتجاوز سلوك كائن آخر. يمكن للكائن الأصلي a (المماثل لسلوكيات الصنف المشتق) تفويض بعض توابعه إلى كائن آخر b (المماثل لسلوكيات الصنف الأساسي). إذا فوّض a تابع foo الخاص به إلى تابع bar الخاص بـ b ، فإن أي استدعاء لـ foo على a سيؤدي إلى تنفيذ تابع bar الخاص بـ b . مع ذلك، يُنفّذ bar في سياق الكائن a ، على سبيل المثال، يشير مُعرّفه إلى a وليس إلى b .self

عند استخدام التفويض، يبرز السؤال التالي: ما قيمة `require` selfعند تقييم دالة على الكائن `a` ، والتي تم تفويضها إلى دالة على الكائن `b` ؟ تنقسم الهوية: إذ يمكن أن تشير إلى `a` أو ` b` . لاحظ أنه على الرغم من أن الكائنين منفصلان ولكل منهما هوية مادية مستقلة، فإن `require` self(سواء استُخدم صراحةً أو ضمنًا) يبقى غامضًا.

التاريخ والمناقشة

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

انظر أيضاً

مراجع

  1. ^ أسمان ، أوي (2003). تكوين البرمجيات الغازية (الطبعة الأولى  ). برلين / هايدلبرغ ، ألمانيا : سبرينغر ساينس + بزنس ميديا . ص.  39. ردمك 9783662050828.
  2. شتاين، لين أندريا (1987-12-01). "التفويض هو ميراث" . إشعارات ACM SIGPLAN . 22 ( 12): 138-146 - عبر رابطة آلات الحوسبة .
  3. هيرمان، ستيفان (22-06-2010). " تبسيط فهم انفصام الشخصية" . MASPEGHI '10: وقائع ورشة العمل الرابعة حول آليات التخصص والتعميم والوراثة (2): 1-5 - عبر رابطة آلات الحوسبة .