شرح مخطط الصنف UML مع الأمثلة
شرح UML Class Diagram بالأمثلة التوضيحية والصور
ما هو الصنف؟
الصنف (بالإنجليزية class) هو مخطط يستخدم لإنشاء عنصر (object)، يُحدِّد الصنف ما يمكن أن يقوم به العنصر.
ما هو مخطط الصنف؟
دعني أبسط لك الموضوع قبل الدخول في مصطلحات جديدة. عندما نريد أن نبني بناء نقوم أولا بعمل مخطط معماري لذلك البناء، وهنا أيضًا عندما نريد أن نبرمج تطبيقًا (سواء للحاسوب المكتبي أو الوب أو الجوال) فنقوم في البداية بعمل هيكلية للتطبيق باستخدام مخططات UML التي توضح بناء التطبيق والأصناف والمتغيرات التي سيحويها التطبيق وكل تلك التفاصيل، عندها يمكن الشروع في البرمجة وفقًا لتلك المخططات. عملية التخطيط هذه مهمة فعليًا ﻷنها تتيح لنا رؤية التطبيق بنظرة شاملة ومعرفة الثغرات والمشاكل قبل الشروع في التنفيذ، وكما يُقال (وأثبتته التجربة): ساعة تخطيط توفر لك 10 ساعات تنفيذ.
يوجد الكثير من أنواع المخططات لـ UML مثل مخطط حالات الاستخدام “Use Case Diagram” ومخطط الأنشطة “Activity Diagram” وغيرهم. موضوع المقال هذا هو مخطط الصنف “Class Diagram” وهو مطلوب دائمًا عند عمل أي تطبيق بشكل هندسي منظم
يوفر UML Class Diagram نظرة عامة على التطبيق البرمجي وذلك من خلال عرض الأصناف كمربعات مسقلة تحوي ضمنها المتغيرات والعمليات (الدالات) الخاصة بكل صنف (مربع) والعلاقات بين تلك الأصناف والتي تكون عبارة عن خطوط تصل بين تلك المربعات.
يحدد مخطط الصنف أنواع المتغيرات في النظام. يمكن استخدام المخطط هذا مع جميع اللغات كائنية التوجه تقريبًا (أي مع لغات البرمجة التي يمكن استخدام البرمجة كائنية التوجه فيها مثل لغة الجافا). يمكن أن يشير الصنف إلى صنف آخر، كما يمكن أن يكون للصنف عناصره الخاصة أو قد يرث من أصناف أخرى.
يساعد Class Diagram في بناء الكود لتطوير تطبيق برمجي ما.
- فوائد مخطط الصنف
- العناصر الأساسية لمخطط الصنف في UML
- مقارنة بين التجميع و التكوين
- أصناف مجردة
- مثال على مخطط الصنف في UML
- مخطط الصنف في دورة حياة تطوير البرمجيات
- الطريقة الأفضل لتصميم مخطط الصنف
- النهاية والملخص
فوائد مخطط الصنف
-
يوضح مخطط الصنف جميع نماذج البيانات في النظام البرمجي حتى تلك المعقدة منها
-
يوفر نظرة عامة حول كيفية هيكلة التطبيق قبل دراسة الكود الفعلي، مما يجعل وقت العمل أسهل وأقل بكثير
-
يساعد على فهم أفضل للتخطيطات العامة للتطبيق
-
يسمح برسم مخططات تفصيلية توضح الكود المطلوب برمجته
-
مفيد للمطورين و المستخدمين.
العناصر الأساسية لمخطط الصنف في UML
العناصر الأساسية في مخطط الصنف UML هي:
-
اسم الصنف
-
المتغيرات
-
العمليات (الدالات)
اسم الصنف
اسم الصنف مطلوب فقط في التمثيل الرسومي للصنف و نلاحظ أنه موجود في الجزء العلوي لمستطيل الصنف ، حيث يُقسم مستطيل الصنف لثلاثة أقسام من الأعلى للأسفل: الأول الاسم والثاني المتغيرات وأنواعها والثالث العمليات (الدالات)،
يجب مراعاة القواعد التالية أثناء تمثيل الصنف:
-
يجب أن يبدأ اسم الصنف دائمًا بحرف كبير.
-
يجب أن يكون اسم الصنف دائمًا في وسط الحجرة الأولى.
-
يجب كتابة اسم الصنف دائمًا بخط عريض.
-
يجب كتابة اسم الصنف من نوع abstract (والذي يُورِّث للأصناف الأخرى) بخط مائل.
المتغيرات
المتغير هو خاصية الصنف التي تصف العنصر الذي يتم تصميمه، و يتم وضع هذا المكون في مخطط الصنف أسفل حجرة الاسم مباشرة.
يتم حساب بعض المتغيرات من خلال متغيرات أخرى، على سبيل المثال يمكن حساب عمر الطالب بسهولة من تاريخ ميلاده.
خصائص المتغيرات
-
تتم كتابة المتغيرات بشكل عام مع نوع الرؤية.
-
أنواع الرؤية هي: Public و private و protected و package ويُشار إليها بالعلامات
+
و-
و#
و~
على التوالي. -
تصف الرؤية إمكانية الوصول إلى متغير الصنف (من قِبَل أصناف أخرى).
-
يجب أن يكون للمتغيرات اسم ذو معنى يصف استخدامها في الصنف.
العلاقات
هناك ثلاثة أنواع رئيسية من العلاقات في UML:
-
التبعيات (Dependencies)
-
التعميمات (Generalizations)
-
الارتباطات (Associations)
التبعيات
التبعية تعني العلاقة بين صنفين أو أكثر حيث قد يؤدي التغيير في صنف إلى فرض تغييرات في الآخر و تعتبر هذه علاقة ضعيفة حيث تشير التبعية إلى أن صنف واحد يعتمد على صنف أخر.
في المثال التالي ، يعتمد الطالب على الكلية التي يتبع لها
انتبه لشكل الخط أو السهم بين الصنفين فهو الذي يوضح نوع العلاقة، هنا مثلا يتم تمثيل العلاقة بشكل سهم متقطع
التعميمات
يساعد التعميم على توصيل صنف فرعي (subclass) بصنفه الأعلى (superclass)، يستمد الصنف الفرعي متغيراته (يرث) من الصنف الأعلى، لكن لا يمكن استخدام علاقة التعميم هذه لنمذجة تنفيذ الواجهة (interface implementation)، ومن الجدير بالذكر أيضاً أن مخطط الصنف يسمح بإستمداد المتغيرات (التوريث) من عدة أصناف أعلى.
في هذا المثال، يتم تعميم الطالب في الفصل الدراسي من صنف الشخص.
ملاحظة: عند كتابة المتغير نفسه الموجود في الصنف الأعلى (الموَرِّث)أو الشخص (person)في مثالنا هنا في الصنف الأسفل (الوارث) (أو الطالب هنا)، فهذا يعني أننا نريد إلغاء توريث هذا المتغير تحديدا وإعطاء قيمة جديدة مختلفة لهذا المتغير من قيمته التي تكون في الصنف الأعلى.
الارتباطات
يمثل هذا النوع من العلاقات علاقات ثابتة بين الفئتين “أ” و “ب”. يعني مثلا موظف يعمل في منظمة.
فيما يلي بعض قواعد الارتباط (الكتابة التي تظهر على الخط الواصل بين صنفين والتي تحدد العلاقة بينهما):
-
الارتباط هو في الغالب فعل أو جملة فعلية أو جملة اسمية أو اسم.
-
يجب تسميته للإشارة إلى الدور الذي يلعبه الصنف المرفق في نهاية مسار الارتباط.
-
يجب توفر خاصية التبديل في الجمع
في هذا المثال تظهر العلاقة بين الطالب والكلية وهي الدراسات.
التعددية
التعددية تحدد عدد مثيلات المتغيرات التي يتم إنشاؤها عند بدء الصنف، إذا لم يتم تحديد التعددية فإنه بشكل افتراضي تعتبر التعددية افتراضية. مثلا يبين الشكل أعلاه رمز النجمة عند الخط بالقرب من صنف الطالب، وهذا يعني أن الكلية تحوي عدد غير محدد من الطلاب، يمكن أن نضع بدل النجمة عدد محدد أو مثلا 3-1 أي تحوي من طالبا إلى ثلاثة طلاب أو عموما n-m أي من عدد n طالب إلى عدد أقصاه m طالب وما إلى ذلك.
التجميع
التجميع (Aggregation) هو نوع خاص من الارتباط يمثل نموذجًا لعلاقة كاملة بين المجموع وأجزائه.
على سبيل المثال، يتكون صنف الكلية من طالب واحد أو أكثر، لا تعتمد الأصناف المتضمنة في التجميع بشكل كامل على المحتويات حيث سنرى هنا أنه سيظل صنف الكلية حتى لو لم يكن الطالب متاحًا.
التكوين
التكوين (Composition) هو نوع خاص من التجميع الذي يشير إلى ملكية قوية بين صنفين عندما يكون صنف واحد جزءًا من صنف أخر.
على سبيل المثال، إذا كانت الكلية تتكون من فصول للطلبة حيث يمكن أن تحتوي الكلية على العديد من الطلاب، بينما ينتمي كل طالب إلى كلية واحدة فقط، لذلك إذا كانت الكلية لا تعمل فقد تمت إزالة جميع الطلاب أيضًا.
مقارنة بين التجميع و التكوين
التجميع | التكوين |
---|---|
يشير التجميع إلى علاقة يمكن أن يكون الصنف الطفل فيها موجودًا بشكل منفصل عن الصنف الوالد. مثال: السيارات (الأصل) والسيارة (الطفل)، لذا إذا قمت بحذف السيارات، فإن السيارة الفرعية لا تزال موجودة. | علاقة تركيب ثابت حيث لن يكون الطفل موجودًا بشكل مستقل عن الوالد. مثال: المنزل (الوالد) والغرفة (الطفل)، لذلك نحن نعلم أنه لن تنفصل الغرف عن المنزل أبدًا. |
أصناف مجردة
أي abstract class وهي أصناف ذات نموذج أولي للعمليات حيث أنها غير معدة للتنفيذ فمن الممكن أيضًا أن يكون لديك صنف مجرد بدون أي دالات معلنة بداخلها. التجريد مفيد لتحديد الوظائف عبر الأصناف، دعونا نفكر في مثال لصنف مجرد، لنفترض أنه لدينا صنف مجرد يسمى الحركة مع طريقة أو عملية معلنة بداخله،ولنسمي الطريقة المعلنة داخل الصنف المجرد بmove ().
يمكن استخدام طريقة الصنف المجرد من قبل أي موضوع مثل سيارة أو حيوان أو روبوت وما إلى ذلك لتغيير الوضع الحالي كما أنه من المفيد استخدامه مع موضوع ما عندما لا يتم توفير تطبيق للدالة المحددة، حيث يمكننا استخدامه بأي شكل من الأشكال لمواضيع متعددة.
يكون للصنف المجرد في UML نفس ترميز الصنف، و الفرق الوحيد بين الصنف والصنف التجريدي هو أن اسم الصنف يكتب بخط مائل دقيق.
لا يمكن تهيئة صنف مجرد أو إنشاء مثيل له.
في تدوين الصنف المجرد أعلاه، هناك طريقة مجردة واحدة فقط يمكن استخدامها من قبل مواضيع متعددة الأصناف.
مثال على مخطط الصنف في UML
إنشاء مخطط الصنف هو عملية مباشرة خالية من التعقيد حيث أنها لا تنطوي على العديد من الجوانب التقنية. وإليكم المثال التالي:
نظام الصراف الآلي نظام بسيط للغاية حيث يحتاج العملاء فيه إلى الضغط على بعض الأزرار للحصول على أموالهم لكن بنفس الوقت هناك طبقات أمان متعددة يحتاج أي نظام ATM لتمريرها مما يساعد على منع الاحتيال وتقديم المال أو التفاصيل لعملاء الخدمات المصرفية عندما يحتاجون إليها.
فيما يلي مثال على مخطط UML Class:
مخطط الصنف في دورة حياة تطوير البرمجيات
يمكن استخدام مخطط الصنف في مراحل تطوير البرامج المختلفة كما أنه يساعد في نمذجة الرسوم البيانية لمخططات الأصناف في ثلاث وجهات نظر مختلفة.
1. المنظور المفاهيمي: تصف المخططات المفاهيمية الأشياء في العالم الحقيقي حيث أنه يجب عليك رسم مخطط يمثل المفاهيم في المجال الذي هو قيد الدراسة حاليا كما أن هذه المفاهيم تتعلق دائما بالصنف و لا علاقة لها باللغة.
2. منظور المواصفات: يصف منظور المواصفات ملخصات البرامج أو المكونات التي تحتوي على مواصفات وواجهات غير أنه لا يلزم القيام بإجراء معين.
3. منظور التنفيذ: يستخدم هذا النوع من مخطط الصنف في عمليات التنفيذ التي تعتمد على لغة أو تطبيق معين حيث أنه يستخدم منظور التنفيذ لتنفيذ البرامج.
الطريقة الأفضل لتصميم مخطط الصنف
مخططات الأصناف هي أهم مخططات مستخدمة في UML لتطوير تطبيقات البرمجيات حيث أنه هناك العديد من الخصائص التي يجب أخذها في عين الإعتبار أثناء رسم مخطط الصنف حيث أنها تمثل جوانب مختلفة من تطبيق البرمجيات.
إليك بعض النقاط التي يجب وضعها في عين الاعتبار أثناء رسم مخطط الصنف:
-
يجب أن يكون الاسم المعطى لمخطط الصنف ذا معنى علاوة على ذلك يجب أن يصف الجانب الحقيقي للنظام.
-
يجب تحديد العلاقة بين كل عنصر بشكل مسبق.
-
يجب تحديد المسؤولية التي يتحملها كل صنف.
-
يجب تحديد الحد الأدنى من الخصائص لكل صنف لأنه يمكن أن تجعل الخصائص غير المرغوب فيها مخطط الصنف معقدًا للغاية.
-
يجب تضمين ملاحظات المستخدم عندما تحتاج إلى تحديد بعض جوانب مخطط الصنف حيث أنه في نهاية الرسم يجب أن يكون مفهوما لفريق تطوير البرمجيات.
-
في النهاية يجب رسم المخطط على ورق عادي قبل إنشاء النسخة النهائية، علاوة على ذلك يجب إعادة صياغتها حتى تصبح جاهزة للتسليم النهائي.
نصيحة: لإنشاء مخطط UML على الحاسوب بشكل عملي فهناك العديد من تطبيقات الوب التي تعمل على المتصفح وتساعدك في ذلك مثل أداة Creately أو diagramsالمجانية، ولكنها فقط للمخططات الصغيرة، حيث سيصبح العمل والمتصفح بطيئًا جدًا عند اتساع المخطط. لذا وللمخططات الكبيرة يفضل استخدام تطبيق على الحاسوب وأنصحك بـ Eclipse Papyrus المجاني.
النهاية والملخص
-
UML هي اللغة القياسية لتحديد وتصميم وتصور عناصر أنظمة البرامج
-
الصنف هو مخطط لموضوع
-
يصف مخطط الصنف أنواع المواضيع الموجودة في النظام وأنواع العلاقات المختلفة الموجودة بينها
-
كما يسمح مخطط الصنف بتحليل وتصميم العرض الثابت لتطبيق البرنامج
-
مخططات الأصناف هي أهم المخططات الموجودة في UML و التي تستخدم لتطوير تطبيقات البرمجيات
-
العناصر الأساسية في مخطط الصنف في UML هي 1) إسم الصنف 2) السمات 3) العلاقات
-
يوفر مخطط الصنف نظرة عامة حول كيفية هيكلة التطبيق قبل دراسة الكود الفعلي، مما يجعل وقت العمل أسهل وأقل بكثير
-
يُعد مخطط الصنف مفيدًا في العمل مع لغات البرمجة كائنية التوجه مثل Java وسي بلس بلس وروبي وبايثون وما إلى ذلك.
هذه المقالة مترجمة وبتصرّف، المصدر