مبدأ الفتح والإغلاق

صورة برتراند ماير
تم تقديم مبدأ الفتح والإغلاق بواسطة برتراند ماير .

في البرمجة الكائنية التوجه ، ينص مبدأ الانفتاح والإغلاق ( OCP ) على أن " كيانات البرمجيات (الفئات، والوحدات، والوظائف، وما إلى ذلك) يجب أن تكون مفتوحة للتوسيع، ولكنها مغلقة للتعديل[ 1 ] أي أن مثل هذا الكيان يمكن أن يسمح بتوسيع سلوكه دون تعديل شفرة المصدر الخاصة به .

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

يُعد مبدأ الانفتاح والإغلاق أحد مبادئ SOLID الخمسة للتصميم الموجه للكائنات.

مبدأ ماير المفتوح والمغلق

يُنسب الفضل عمومًا إلى برتراند ماير في ابتكار مصطلح مبدأ الانفتاح والإغلاق ، [ 2 ] والذي ظهر في كتابه الصادر عام 1988 بعنوان "بناء البرمجيات الموجهة للكائنات" . [ 1 ] : 23

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

في الوقت الذي كان ماير يكتب فيه، كانت إضافة الحقول أو الدوال إلى مكتبة تتطلب حتمًا تغييرات في أي برامج تعتمد على تلك المكتبة. اعتمد حل ماير المقترح لهذه المشكلة على مفهوم الوراثة الموجهة للكائنات (وتحديدًا وراثة التنفيذ ): [ 1 ] : 229

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

مبدأ الفتح والإغلاق متعدد الأشكال

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

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

كانت مقالة روبرت سي. مارتن عام 1996 بعنوان "مبدأ الانفتاح والإغلاق" [ 2 ] من بين الكتابات الرائدة التي تبنت هذا النهج. وفي عام 2001، ربط كريج لارمان مبدأ الانفتاح والإغلاق بنمط أليستير كوكبيرن المسمى " التغيرات المحمية" ، وبمناقشة ديفيد بارناس لإخفاء المعلومات . [ 3 ]

انظر أيضاً

مراجع

  1. 1 2 3 ماير، برتراند (1988). بناء البرمجيات الموجهة للكائنات . برنتيس هول. ISBN 0-13-629049-3.
  2. 1 2 روبرت سي. مارتن ، "مبدأ الانفتاح والإغلاق"، تقرير C++ ، يناير 1996. مؤرشف في 22 أغسطس 2006 على موقع Wayback Machine .
  3. لارمان، كريغ (مايو-يونيو 2001). "التنوع المحمي: أهمية كونه مغلقًا" (ملف PDF) . مجلة IEEE للبرمجيات . 18 (2). IEEE: 89-91 . doi : 10.1109/52.922731 .