GRASP (التصميم الموجه للكائنات)
أنماط برمجيات تعيين المسؤولية العامة (أو المبادئ )، المختصرة GRASP ، هي مجموعة من "تسعة مبادئ أساسية في تصميم الكائنات وتعيين المسؤولية" [ 1 ] : 6 نُشرت لأول مرة بواسطة كريج لارمان في كتابه عام 1997 بعنوان تطبيق UML والأنماط .
تتضمن الأنماط والمبادئ المختلفة المستخدمة في GRASP ما يلي: المتحكم، والمنشئ، والتوجيه غير المباشر، وخبير المعلومات، والترابط المنخفض، والتماسك العالي ، وتعدد الأشكال ، والاختلافات المحمية، والتصنيع الخالص. [ 2 ] تحل هذه الأنماط مجتمعةً بعض المشكلات البرمجية الشائعة في العديد من مشاريع تطوير البرمجيات . لم تُبتكر هذه التقنيات لخلق أساليب عمل جديدة، بل لتوثيق وتوحيد مبادئ البرمجة القديمة المجربة والمختبرة في تصميم البرمجيات الموجهة للكائنات.
يذكر لارمان أن "الأداة التصميمية الأساسية لتطوير البرمجيات هي عقل مُلِمٌّ بمبادئ التصميم، وليست لغة النمذجة الموحدة (UML) أو أي تقنية أخرى." [ 3 ] : 272. وبالتالي، فإن مبادئ GRASP هي في الواقع مجموعة أدوات ذهنية، وأداة تعليمية تساعد في تصميم البرمجيات الموجهة للكائنات.
أنماط
في تصميم البرمجيات الموجهة للكائنات، يُعدّ النمط وصفًا مُحددًا لمشكلة وحلها، ويمكن تطبيقه في سياقات جديدة. ومن الناحية المثالية، يُرشدنا النمط إلى كيفية تطبيق حله في ظروف مُختلفة، مع مراعاة العوامل المؤثرة والمفاضلات. وتُساعد العديد من الأنماط، عند تحديد فئة مُعينة من المشاكل، في توجيه عملية إسناد المسؤوليات إلى الكائنات.
خبير معلومات
المشكلة: ما هو المبدأ الأساسي الذي يتم بموجبه إسناد المسؤوليات إلى الكائنات؟ الحل: إسناد المسؤولية إلى الفئة التي تمتلك المعلومات اللازمة لتنفيذها.
خبير المعلومات (أو الخبير أو مبدأ الخبير ) هو مبدأ يستخدم لتحديد مكان تفويض المسؤوليات مثل الأساليب والحقول المحسوبة وما إلى ذلك.
باستخدام مبدأ خبير المعلومات، يتمثل النهج العام لتحديد المسؤوليات في النظر إلى مسؤولية معينة، وتحديد المعلومات اللازمة لتنفيذها، ثم تحديد مكان تخزين تلك المعلومات.
سيؤدي هذا إلى تحميل المسؤولية للفئة التي تمتلك أكبر قدر من المعلومات اللازمة لإنجازها. [ 3 ] : 17:11
النمط أو المبدأ ذو الصلة : اقتران منخفض، تماسك عالٍ
الخالق
يُعد إنشاء الكائنات من أكثر الأنشطة شيوعًا في الأنظمة الموجهة للكائنات. وتُعتبر تحديد الفئة المسؤولة عن إنشاء الكائنات خاصية أساسية للعلاقة بين كائنات فئات معينة.
المشكلة: من يُنشئ الكائن A؟ الحل: بشكل عام، قم بتعيين Bمسؤولية إنشاء الكائن للفئة Aإذا انطبق واحد، أو يُفضل أكثر، مما يلي:
- تحتوي الأمثلة على أمثلة
Bأو تجمع بشكل مركب أمثلة منA - أمثلة على
Bسجلات الحالات منA - أمثلة على
Bاستخدامات وثيقة لـA - تحتوي مثيلات على
Bمعلومات التهيئة لمثيلاتAوتمررها عند الإنشاء. [ 3 ] : 16:16.7
النمط أو المبدأ ذو الصلة : اقتران منخفض، نمط المصنع
وحدة التحكم
يُسند نمط المتحكم مسؤولية التعامل مع أحداث النظام إلى فئة غير تابعة لواجهة المستخدم ، تمثل النظام ككل أو سيناريو حالة استخدام محددة . كائن المتحكم هو كائن غير تابع لواجهة المستخدم، مسؤول عن استقبال أحداث النظام أو معالجتها .
المشكلة: من المسؤول عن معالجة حدث إدخال النظام؟ الحل: يجب استخدام وحدة تحكم حالة الاستخدام للتعامل مع جميع أحداث النظام الخاصة بحالة استخدام معينة، ويمكن استخدامها لأكثر من حالة استخدام. على سبيل المثال، بالنسبة لحالتي استخدام " إنشاء مستخدم" و "حذف مستخدم" ، يمكن استخدام فئة واحدة تُسمى UserController ، بدلاً من وحدتي تحكم منفصلتين. بدلاً من ذلك، يمكن استخدام وحدة تحكم الواجهة ؛ وينطبق هذا عندما يُمثل الكائن المسؤول عن معالجة الحدث النظام ككل أو كائنًا رئيسيًا.
يُعرَّف المتحكم بأنه أول عنصر بعد طبقة واجهة المستخدم يستقبل وينسق ("يتحكم") عملية النظام. ينبغي للمتحكم تفويض المهام المطلوبة إلى عناصر أخرى؛ فهو ينسق أو يتحكم في النشاط. ولا ينبغي له القيام بالكثير من العمل بنفسه. يمكن اعتبار متحكم GRASP جزءًا من طبقة التطبيق/الخدمة [ 4 ] (بافتراض أن التطبيق قد ميّز بوضوح بين طبقة التطبيق/الخدمة وطبقة المجال ) في نظام كائني التوجه ذي طبقات مشتركة في بنية منطقية لنظام المعلومات.
النمط أو المبدأ ذو الصلة : الأمر ، الواجهة ، الطبقات ، التصنيع الخالص
غير مباشر
يدعم نمط التوجيه غير المباشر انخفاض الترابط بين العناصر، ويعيد استخدام الإمكانات الكامنة بينها من خلال إسناد مسؤولية الوساطة بينهما إلى كائن وسيط. ومن الأمثلة على ذلك إدخال مكون تحكم للوساطة بين البيانات (النموذج) وتمثيلها (العرض) في نمط النموذج-العرض-المتحكم. وهذا يضمن بقاء الترابط بينهما منخفضًا.
المشكلة: أين يتم تحديد المسؤولية لتجنب الربط المباشر بين عنصرين (أو أكثر)؟ كيف يمكن فصل العناصر بحيث يتم دعم الربط المنخفض والحفاظ على إمكانية إعادة الاستخدام عالية؟
الحل: إسناد المسؤولية إلى كائن وسيط للتوسط بين المكونات أو الخدمات الأخرى بحيث لا تكون مرتبطة بها بشكل مباشر. يُنشئ هذا الوسيط مسارًا غير مباشر بين المكونات الأخرى.
اقتران منخفض
الترابط هو مقياس لمدى قوة ارتباط عنصر ما بعناصر أخرى، أو معرفته بها، أو اعتماده عليها. ويُعدّ انخفاض الترابط نمطًا تقييميًا يُحدد كيفية توزيع المسؤوليات المتعلقة بالفوائد التالية:
- انخفاض الاعتماد بين الفئات،
- التغيير في أحد الصفوف له تأثير أقل على الصفوف الأخرى،
- إمكانية إعادة استخدام أعلى.
تماسك عالٍ
التماسك العالي هو نمط تقييمي يسعى إلى الحفاظ على تركيز العناصر وسهولة إدارتها وفهمها. يُستخدم التماسك العالي عادةً لدعم الترابط المنخفض. ويعني أن مسؤوليات مجموعة معينة من العناصر مترابطة بقوة ومركزة بشكل كبير على موضوع محدد. يُعد تقسيم البرامج إلى فئات وأنظمة فرعية، إذا تم بشكل صحيح، مثالاً على الأنشطة التي تزيد من خصائص التماسك للفئات والأنظمة الفرعية المسماة. في المقابل، يُشير التماسك المنخفض إلى حالة يكون فيها لمجموعة من العناصر، كنظام فرعي مثلاً، مسؤوليات كثيرة غير مترابطة. غالباً ما تعاني الأنظمة الفرعية ذات التماسك المنخفض بين عناصرها المكونة من صعوبة في الفهم وإعادة الاستخدام والصيانة والتغيير ككل. [ 3 ] : 314-315
تعدد الأشكال
وفقًا لمبدأ تعدد الأشكال ، تقع مسؤولية تحديد تنوع السلوكيات بناءً على النوع على عاتق النوع الذي يحدث فيه هذا التنوع. ويتحقق ذلك باستخدام عمليات متعددة الأشكال . ينبغي لمستخدم النوع استخدام عمليات متعددة الأشكال بدلًا من التفرع الصريح بناءً على النوع.
المشكلة: كيف نتعامل مع البدائل بناءً على النوع؟ وكيف ننشئ مكونات برمجية قابلة للتوصيل؟ الحل: عندما تختلف البدائل أو السلوكيات ذات الصلة باختلاف النوع (الفئة)، نُسند مسؤولية السلوك - باستخدام عمليات متعددة الأشكال - إلى الأنواع التي يختلف فيها السلوك. (للتعددية الشكلية عدة معانٍ مترابطة. في هذا السياق، تعني "إعطاء الاسم نفسه للخدمات في كائنات مختلفة").
التباينات المحمية
يحمي نمط الاختلافات المحمية العناصر من الاختلافات في العناصر الأخرى (الكائنات والأنظمة والأنظمة الفرعية) عن طريق تغليف محور عدم الاستقرار بواجهة واستخدام تعدد الأشكال لإنشاء تطبيقات مختلفة لهذه الواجهة.
المشكلة: كيف نصمم الكائنات والأنظمة الفرعية والأنظمة بحيث لا تؤثر الاختلافات أو عدم الاستقرار في هذه العناصر سلبًا على العناصر الأخرى؟ الحل: تحديد نقاط الاختلاف أو عدم الاستقرار المتوقعة؛ وتحديد المسؤوليات لإنشاء واجهة مستقرة حولها.
تصنيع خالص
إنّ " التصنيع البحت" هو فئة لا تُمثّل مفهومًا في مجال المشكلة، وقد صُمّمت خصيصًا لتحقيق ترابط منخفض وتماسك عالٍ، مع إمكانية إعادة استخدامها (عندما لا يُقدّم حلّ من خلال نمط خبير المعلومات ). يُطلق على هذا النوع من الفئات اسم "خدمة" في تصميم المجال الموجّه .
الأنماط والمبادئ ذات الصلة • اقتران منخفض. • تماسك عالٍ.
انظر أيضاً
مراجع
- ↑ كريج لارمان (2001). تطبيق لغة النمذجة الموحدة (UML) والأنماط: مقدمة في التحليل والتصميم الموجه للكائنات والعملية الموحدة (ملف PDF) (الطبعة الثانية ). برنتيس هول. ISBN 0-13-092569-1.
- ↑ محمد عمير (2018-02-26). "SOLID وGRASP ومبادئ أساسية أخرى للتصميم الموجه للكائنات" . DZone .
- 1 2 3 4 كريج لارمان (2004). تطبيق لغة النمذجة الموحدة (UML) والأنماط: مقدمة في التحليل والتصميم الموجه للكائنات والتطوير التكراري ( الطبعة الثالثة). بيرسون. ISBN 978-0131489066.
- ↑ "طبقة التطبيق كواجهة عمل؟" . مجموعات ياهو! (تصميم قائم على المجال) . مؤرشف من الأصل بتاريخ 7 أغسطس 2020. تم الاطلاع عليه بتاريخ 15 يوليو 2010 .
- تصميم البرمجيات
- مبادئ البرمجة
