تصميم كائني التوجه

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

 نظرة عامة 
يحتوي الكائن على بيانات وإجراءات مغلفة مجمعة معًا  لتمثيل كيان. «واجهة الكائن» تعرّف  كيفية التعامل مع الكائن. يتم وصف برنامج ما كائني التوجه بتفاعل هذه الكائنات. التصميم الموجه للكائنات هو نظام تعريف الكائنات وتفاعلاتها لحل مشكلة تم تحديدها وتوثيقها أثناء التحليل الموجه للكائنات.

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

 موضوعات التصميم كائني التوجه 

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

بعض عناصر الإدخال النموذجية للتصميم كائني التوجه هي:

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

 مفاهيم موجهة للكائنات 
المفاهيم الأساسية الخمسة للتصميم الموجه للكائنات هي ميزات مستوى التنفيذ المبنية في  لغة البرمجة. غالبًا ما تتم الإشارة إلى هذه الميزات من خلال هذه الأسماء الشائعة:

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

 مفاهيم التصميم 

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

 إخراج (مخرجات) التصميم كائني التوجه 

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

 بعض مبادئ واستراتيجيات التصميم 

 حقن التبعية : الفكرة الأساسية هي أنه إذا كان الكائن يعتمد على وجود مثيل لكائن آخر ، فإن الكائن المطلوب «يتم حقنه» في الكائن التابع؛ على سبيل المثال ، يتم تمرير اتصال قاعدة بيانات كقيمة للمنشئ بدلاً من إنشاء واحد داخليًا.
 مبدأ التبعيات اللاحلقية الرسم البياني للتبعية للحزم أو المكونات: تعتمد التقسيمات على نطاق  العمل لمطور واحد يجب ألا يحتوي على دورات. ويشار إلى هذا أيضًا بوجود رسم بياني لا حلقي موجه. على سبيل المثال ، تعتمد الحزمة C على الحزمة B ، والتي تعتمد على الحزمة A. إذا كانت الحزمة A تعتمد أيضًا على الحزمة C، فستكون لديك حلقة.

 مبدأ إعادة الاستخدام المركب: يفضل التركيب متعدد الأشكال للكائنات على الميراث.
 ملحق: مسرد المصطلحات الإنجليزية 
المقدمةالتصميم كائني التوجه Object-oriented designكيانentity"واجهة الكائن"interface objectتعرّف defines تم تحديدها identifiedتوثيقها documentedالمبنية على الأصناف class-basedالنموذج الأولي للكائن object prototype-basedمثيل للأصنفinstantiating classesاستنساخcloningتشملencompassingالتحللdecompositionوتدوينًاdepictingالإدخال inputإخراج outputمخرجات الأداة output artifactتغذية راجعة feedbackعملية تكرارية iterative processالأدوات artifactsلقطة واحدةone shotعناصر الإدخال النموذجيةtypical input artifactsلنموذج المفاهيميConceptual modelالتنفيذimplementationحالة الاستخدام Use caseالممثلونactorsمستخدمين نهائيينend usersمخططات حالة الاستخدامuse case diagramsلتحديد الممثلidentify the actorرسم تخطيطي لتسلسل النظامSystem sequence diagramالرسوم البيانية لتسلسل النظامsystem sequence diagrams (SSD)الأحداث المحتملة بين النظامinter-system eventsوثائق واجهة المستخدم User interface documentationsويصف شكل وأسلوبlook and feelواجهة المستخدم للمنتج النهائيend product's user interfaceتصوير visualizeالمنتج النهائيend-productالمصممdesignerنموذج البيانات العلائقيةRelational data modelنموذج البياناتdata modelنموذج مجردabstract modelنموذج البيانات العلائقيةrelational data modelالخرائط العلائقية للكائنات object-relational mappingنموذج البيانات العلائقيةrelational data modelالأدوات التصميمية الموجهة للكائنات بالتوازيobject-oriented design artifacts in parallelالأداةartifactميزات مستوى التنفيذimplementation level featuresالمبنية فيbuilt intoكائن / صنفObject/Classاقترانcouplingربط وثيقassociationهياكل البياناتdata structuresالطرقmethodsالوظائف (الدوال)functionsصنفclassكائنobjectبخصائصهاpropertiesإخفاء المعلومات Information hidingحمايةprotectمكوناتcomponentsكيانات خارجيةexternal entitiesالمفتاحية اللغويةlanguage keywordsالإعلان declaredمتغير variableخاصprivateمحميprotectedتوسيعextendتجاوز overrideوظيفة صنف أخرfunctionality of another ''class''صنف فرعيsubclassالصنف الأصلsuperclassالدوالfunctionsواجهة بينيةInterfaceتنفيذimplementationطريقة methodتعريف defineالتواقيعsignaturesتعدد الأشكال Polymorphismاشتقاق النوع بشكل فرعيsubtypingبكائناته الفرعيةwith its subobjectsمتغير الكائنobject-variableاحتواءcontainلكائنات الفرعيةsubobjectsالكائناتDefining objectsإنشاءcreatingللصنفclass diagramالرسم التخطيطي المفاهيميconceptual diagramخريطة تعيين الكيان إلى الصنفmap entity to classتحديدIdentifyingالسمات .attributesأنماط التصميمdesign patternsأنماط التصميم الكائني التوجهObject-oriented design patternsالعلاقاتrelationshipsالتفاعلاتinteractionsأصناف التطبيق النهائيfinal application classesالكائنات المتضمنة .objects that are involvedتعريفDefineإطار التطبيقapplication frameworkالهيكل القياسيto implement the standard structureلتطبيقapplicationتجميعbundlingللمطورdeveloperتحديد الكائنات / البيانات الدائمةIdentify persistent objects/dataحدد الكائناتIdentify objectsوقت تشغيل واحد للتطبيقsingle runtime of the applicationقاعدة بيانات علائقيةrelational databaseتخطيط علاقة الكائنobject relation mappingالكائنات البعيدةremote objectsمخطط التسلسلSequence diagramمخطط تسلسل النظامsystem sequence diagramفي وقت واحدsimultaneouslyوكأسهم أفقيةhorizontal arrowsمخطط الصنفClass diagramمخطط لغة النمذجة الموحدةUMLللهيكل الثابتstatic structureبنية النظامstructure of a systemأصناف النظامsystem's classesسماتهاattributesالعلاقات بين الأصنافrelationships between the classesمدخلاتInputsلمخطط الصنف العام للنظامglobal class diagram of the systemحقن التبعيةDependency injectionالكائنobjectوجود مثيل لكائن آخرinstance of some other objectيتم حقنهinjectedالكائن التابعdependentاتصال قاعدة بياناتdatabase connectionكقيمةargumentللمنشئ constructor بدلاً من إنشاء واحد داخليًاinstead of creating one internallyمبدأ التبعيات اللاحلقيةAcyclic dependencies principleالرسم البياني للتبعية للحزمdependency graph of packagesالمكوناتcomponentsالتقسيماتgranularityنطاق العملscope of workرسم بياني لا حلقي موجهdirected acyclic graphالحزمةpackageحلقةcycleمبدأ إعادة الاستخدام المركبComposite reuse principleالتركيبcompositionمتعدد الأشكالpolymorphic

 انظر أيضًا 
 بطاقة صنف-مسؤولية-تعاون
 برمجة كائنية التوجه

 المراجع 

 روابط خارجية 

 التحليل والتصميم الكائني  - نظرة عامة باستخدام UML
 لارمان ، كريج. تطبيق UML والأنماط - الإصدار الثالث
 التحليل والتصميم الكائني التوجه
 LePUS3 وClass-Z : لغات النمذجة الرسمية للتصميم الكائني التوجه

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