الأصناف في UML
الأصناف في UML
كل نظام برمجي ستقوم بنمذجته يتألف من أشياء تملك خصائص وتستطيع القيام بأفعال محددة. في لغة UML، تُمثَّل هذه الأشياء بوصفها أصنافاً (Classes). قبل أن ترسم أي خط على مخطط الأصناف، عليك أن تعرف بدقة كيف يُرسم الصنف وماذا يعني كل جزء منه. هذا هو موضوع هذا الدرس.
صندوق الصنف ذو الثلاثة أقسام
يُرسم الصنف في UML على شكل مستطيل مقسّم إلى ثلاثة أقسام أفقية:
- قسم الاسم (أعلى الصندوق) — اسم الصنف، يكتب في المنتصف بتنسيق PascalCase، مثل:
BookCopyأوAppointment. - قسم السمات (المنتصف) — البيانات التي يحتفظ بها الصنف (خصائصه أو حقوله).
- قسم العمليات (أسفل الصندوق) — السلوكيات التي يستطيع الصنف تنفيذها (توابعه أو دواله).
رموز الوصول (Visibility Markers)
تبدأ كل سمة وكل عملية برمز يسمى محدد الوصول، وهو رمز واحد يُعلن من يستطيع الوصول إلى هذا العنصر. يحدد معيار UML أربعة رموز:
+عام (public) — يمكن الوصول إليه من أي مكان-خاص (private) — يمكن الوصول إليه داخل هذا الصنف فقط#محمي (protected) — يمكن الوصول إليه داخل هذا الصنف والأصناف المشتقة منه~حزمة (package) — يمكن الوصول إليه داخل نفس الحزمة أو مساحة الأسماء
صياغة السمات
الصياغة الكاملة للسمة في UML هي:
عملياً ستكتب أشياء مثل:
الجزءان : Type و= defaultValue اختياريان، لكنهما ذوا قيمة كبيرة لأنهما يزيلان الغموض عند تسليم العمل للمطورين.
صياغة العمليات
الصياغة الكاملة للعملية هي:
أمثلة من نظام حجز مواعيد العيادة:
مثال واقعي: صنف الموعد (Appointment)
تخيّل عيادة خاصة تحجز مواعيد للمرضى. بعد جمع المتطلبات، يحدد المحلل صنفاً باسم Appointment. إليك كيف يُرسم:
Appointment لا appointments). أسماء السمات بتنسيق camelCase تبدأ بحرف صغير (مثل appointmentDate). أسماء العمليات أفعال بتنسيق camelCase (مثل confirm وcancel). التسمية المتسقة تجعل المخططات مقروءة لجميع أعضاء الفريق.
ما يُوضع في السمات وما يُوضع في العمليات
خطأ شائع في البداية هو الخلط بين البيانات والسلوكيات. استخدم هذه القاعدة:
- السمة — حقيقة أو خاصية تصف الكائن. تكون اسماً أو تعبيراً اسمياً:
price،emailAddress،quantity. - العملية — شيء يستطيع الكائن فعله أو حسابه. تكون فعلاً أو تعبيراً فعلياً:
calculateTotal()،sendConfirmation()،isExpired().
في متجر إلكتروني، يحتوي الصنف Product على price وstockLevel كسمات، لكن applyDiscount(rate : Decimal) وcheckAvailability(quantity : Integer) كعمليات. البيانات تسكن في السمات؛ المنطق يسكن في العمليات.
إخفاء الأقسام
في المخططات الكبيرة التي تضم أصنافاً كثيرة، يجعل إظهار كل سمة وكل عملية الرسم غير مقروء. يتيح معيار UML إخفاء أي من القسمين السفليين. القسم الأوسط أو الأسفل الفارغ يعني الإخفاء المتعمد، لا أن الصنف فارغ فعلاً. ستجد نفسك كثيراً ترسم مخططات عالية المستوى تُظهر أسماء الأصناف فقط، ثم تضيف التفاصيل فقط للأصناف الأكثر صلة بالنقاش الجاري.
...) داخل القسم الفارغ لتوضيح النية.
ملخص
لكل صنف UML صندوق بثلاثة أقسام: الاسم في الأعلى، والسمات في الوسط، والعمليات في الأسفل. تسبق رموز الوصول (+، -، #، ~) كل عنصر. اتباع الصياغة الدقيقة للسمات والعمليات — النوع، القيمة الافتراضية، المعاملات، نوع القيمة المُعادة — يزيل الغموض ويجعل نماذجك مفيدة مباشرةً للمطورين. في الدرس التالي ستتعلم كيف تكتشف هذه الأصناف بقراءة وثائق المتطلبات الحقيقية وتحليلها.