Professional Documents
Culture Documents
Class Diagram
Class Diagram
2
مخطط الصفوف
يسمى هذا المخطط أيضا المخطط البنيوي الساكن .
يعتبر العمود الفقري تقريبا لكل الطرق غرضية التوجه ( . ) OO Methods
يعرف بمجموعة من العناصر:
الصفوف .classes
الواجهات .interfaces
العالقات relationshipsفيما بينها.
3
Class
: Class يعبر عنه بيانيا بمستطيل مقسم إلى ثالثة أقسام بشكل أفقي .يحتوي
القسم األول اسم الصف ,يحتوي القسم الثاني قائمة بالواصفات attributes
وتوضع قائمة بالعمليات في القسم الثالث واألخير.
ClassName
Attribute:Type:initialvalue
يكتب اسم الصف بخط عريض ( )boldويبدأ اسمه بحرف كبير وإذا
كان مؤلفا من أكثر من كلمة فتفصل عن بعضها بـ (_) وتبدأ كل كلمة
بحرف كبير.
4
إمكانية الرؤيا
تستخدم عالمات الرؤيا لتدل على من يستطيع الوصول إلى المعلومات
المحتواة ضمن الصف وهي ثالثة أشكال :
: Private visibility تخفي المعلومات عن أي شيء خارج الصف ويعبر
عنها بإشارة (.)-
: Public visibility تسمح لكل الصفوف األخرى أن ترى المعلومات المحتواة
في الصف ,يعبر عنها بإشارة ( .) +
: Protected visibility تسمح للصفوف األبناء فقط بالوصول إلى المعلومات
التي يتم توريثها من الصف األب ,يعبر عنها بإشارة ).(#
5
Example UML Class
Name, bold
6
Example in C++
class Invoice
{
public
Invoice( );
~Invoice( );
double amount;
Date date;
char customer[25];
private
static int number_of _invoices = 0;
};
7
تحديد العالقات بين الصفوف
8
Dependency Relationship
االعتمادية هي عالقة بين صفين توضح أن سلوك صف يؤثر في صف أخر .تمثل بخط
متقطع يربط بين الصفين ينتهي بسهم يتجه من الصف المعتمد dependent classباتجاه الصف
المستقل independent class
”(Aإذا وجدت وظيفة ) (Methodفي الصف Aيعتمد على الصف B)” B
الصف Aتحتاج لكيان من الصف Bلكي تقوم بعملها.
9
Association Relationship
توضح عالقة االقتران بأن الصف األول يتصل بشكل عام مع الصف الثاني فمثال
الموظف يعمل في الشركة ,والطالب يسجل في الجامعة.
تؤمن عالقة االقتران بين الصفوف مسارات تسهل تعاون األغراض حيث تستخدم
األغراض هذه المسارات لتبادل الرسائل .
تمثل هذه العالقة بخط مستقيم يربط بين الصفين.
المثال التالي يوضح عالقة عمل تربط بين الجامعة واألستاذ الجامعي.
Association Name Association
Manager Department
Manages of
manager managed
11
درجة االقتران
تعرف درجة االقتران عدد الصفوف المرتبطة بعالقة االقتران ,ويكون في معظم
األحيان اقترانا ثنائيا أي االرتباط بين صفين .
يمكن أن تعرف عالقة االقتران على صف واحد ويدعى عند ذلك اقترانا أحاديا ,
يعبر هذا االقتران عن عالقة تربط بين أغراض الصف نفسه ,وكمثال على هذا
النوع ليكن لدينا الصف employeesممثال لجميع الموظفين ,إن موظفا ( غرضا من
الصف )employeeقد يديره managed byموظف آخر.
Managed by
12
تعدد االقتران association
multiplicity
يعرف تعدد االقتران عدد األغراض من صف ما والمرتبطة بغرض واحد من
الصف اآلخر.
يتم التعبير عن تعدد االقتران بكتابة عدد صحيح أو مجال من األعداد الصحيحة
من الشكل n1..n2حيث يعرف العدد n1الحد األدنى من األغراض المرتبطة
و n2الحد األعلى وعادة ما يتم استخدام * بدال من n2إذا لم نكن نعرف قيمة
هذا العدد بدقة .
القيم األكثر تكرار مبينة في الجدول التالي :
الحظ أن 0تعني أن تشير إلى أن عضوية الغرض في االقتران خيارية أما 1فهي تشير إلى أن العضوية
13 إلزامية
تعدد االقتران association
multiplicity
في نظام التدريس ,كل مدرس يقوم بتدريس مجموعة مناهج ,كما أن المنهاج الواحد قد
يقوم بتدريسه أكثر من مدرس ,وهذا يوافق تعدد االقتران المبين في الشكل التالي:
Teacher Course
*1.. *1..
1..1 *0..
14
Aggregation Relationship
عالقة التجميع Aggregationهي حالة خاصة من االقتران Associationوهي عالقة
تربط بين الكل والجزء ) (Whole-Partأي بين صف تجمع وأجزائه.
تمثل بخط مستقيم يربط بين الصفين ينتهي بمعين فارغ يتجه ناحية الصف الذي يمثل
الكل.
في عالقة التجميع حياة الجزء غير مرتبطة بحياة الكل ،بمعنى أن الجزء من الممكن أن
يوجد في حالة عدم وجود الكل.
Wheel
أمثلة :
Car Part
Whole crate Lay_in
Orange_Bottle
1 *
Motor Part
العجلة والمحرك غير مرتبطان بوجود السيارة زجاجات العصير غير مرتبطة بوجود الصندوق
15
Composition Relationship
التركيب Compositionهو حالة خاصة من التجميع Aggregationذو رابطة ملكية
ownershipمع ترابط زمني بين الصفين.
حياة الجزء مرتبطة بحياة الكل بمعنى أن الجزء ال يمكن أن يوجد في حالة عدم وجود الكل.
الصف يكون جزء واحد partمن صف واحد فقط ولكن من الممكن أن يكون صف كل
wholeلعدة صفوف.
تمثل بخط مستقيم يربط بين الصفوف ينتهي بمعين مظلل يتجه ناحية الصف الذي يمثل الكل.
Student Schedule
من الواضح أنه إذا تم حذف الطالب فإن
الجدول الدراسي للطالب يحذف تلقائيا ولن
يوجد جدول دراسي إال إذا وجد الطالب
Composition
16
Composition Relationship
Chapter Section
Book
1 * 1 *
17
Inheritance Relationship
عالقة الوراثة ( التعميم ) هي عالقة من الشكل ( نوع-من) بين صف أكثر
عمومية ( الصف األعلى أو األب ) ونوع أكثر تخصيصا من ذلك الصف
( الصف األدنى أو االبن ) فالصف األدنى هو نوع من الصف األعلى ويمكن
استخدام غرض من الصف األدنى كلما كان استخدام غرض من الصف
األعلى ممكنا.
وتمثل بخط مستقيم يربط بين الصفوف ينتهي بمثلث فارغ يتجه ناحية
الصف الذي يمثل األب.
مثال يوجد عالقة تعميم بين الصف personوالصف .employee
عند وجود عالقة التعميم ال حاجة إلعادة تعداد الخصائص المعرفة ,إذ يمكن
إعادة استخدام الصفات والعمليات التي عرفها الصف األعلى في الصف
األدنى ,ونقول أن الصف األدنى يرث صفات وطرق الصف األب .
تربط عالقة الوراثة بين صفوف وليس بين أغراض.
18
Example: Single Inheritance
صف يرث صف واحد فقط
If a class has exactly one parent, it has single inheritance.
Ground_Vehicle
owner Person
Superclass weight
(parent) licenseNumber 0..* 1
register( )
inheritance
19
Example: Multiple Inheritance
صف يرث عدة صفوف
If a class has more than one parent, it has multiple inheritance
FlyingThing Animal
multiple
inheritance
20
الصف المجرد Abstract Class
يعتبر الصف المجرد من المفاهيم الهامة في النمذجة وهو ينتج عن مفهوم الوراثة فالصف
يكون مجردا إذا احتوى على عملية واحدة مجردة على األقل .والعملية المجردة هي التي
يعرف لها توقيع (اسم وقائمة وسطاء) في الصف األب بينما تؤجل الطريقة (الكود) إلى
الصفوف األبناء .الصف المجرد هو صف أب ال يمكن أن يكون له كيانات والبد من وجود
صفوف أبناء يرثونه .يكتب اسم الصف المجرد بخط مائل.
Video Borrower
name
number
number
salary grade
21
Interfaces
Think of an interface as a very simple contract that declares,
"These are the operations that must be implemented by classes
that intend to meet this contract."
22
Realization relationship عالقة التحقيق
The realization relationship connects a class to an interface, that supplies its behavioral
specification but not its implementation.
تمثل عالقة التحقيق بخط متقطع يربط بين الصف والواجهة ينتهي بمثلث فارغ يتجه
.ناحية الواجهة
“interface”
Payment
calcAmount()
realization relationship
CachPayment
CreditCardPayment
calcAmount()
calcAmount()
authorize()
23
Interfaces
24
Interfaces In Java
public interface EmailSystem { public void send(Message message); }
25
Class diagram for
library system
تحديد صفوف المجال األساسية
تضم المكتبة مجموعة ضخمة من العناوين .وهذه العناوين قد تكون كتب أو
مجالت.يقوم مدير المكتبة دوريا بشراء كتب ومجالت حديثة.وكذلك يقوم بحذف
الكتب والمجالت القديمة .ومن الجدير بالذكر أن المكتبة تقوم بشراء أكثر من
نسخة لكل عنوان.ويحدد عدد النسخ باالعتماد على أهمية الكتاب وقيمته.
تسمح المكتبة بإعارة الكتب للمستعيرين( طالب ومدرسين) .وتقوم أثناء ذلك
بتسجيل معلومات عن هذه اإلعارة وسيقوم عامل المكتبة باستخدام هذه المعلومات
لتنبيه المستعير في حال عدم إعادة الكتاب المعار.
يقوم عامل المكتبة بإعارة الكتب للمستعيرين وتسجيل االعارات يوميا .ويمكن
للمستعير استعارة أكثر من نسخة.وإلرضاء المستعيرين تسمح المكتبة بعملية
الحجز حيث يقوم المستعير بحجز الكتاب في حال عدم توفر نسخ منه ,على أن
تتم إعارة نسخة من الكتاب إلى الطالب فور توفرها.
يجب على المستعير إعادة الكتب في التاريخ المحدد ,وفي حال تأخر المستعير في
إعادة الكتاب يقوم عامل المكتبة بتذكير المستعير بموعد إعادة الكتاب.
27
تحديد الصفوف
هناك تكرار لبعض األسماء مثل( المستعير والطالب والمدرس).
يجب التمييز بين األسماء المستخدمة لتوضيح المسألة واألسماء الالزمة إلكمال
بناء النظام وهي التي تخزن في النظام.فالمكتبة ومدير المكتبة وعامل المكتبة هي
أسماء ذكرت فقط لتوضيح المسألة.
عملية تحديد الصفوف بشكل دقيق تتم في مرحلة التصميم وليس التحليل ,ألنه في
مرحلة التصميم تكون المفاهيم قد توضحت بشكل كبير وعندها قد تحذف بعض
الصفوف المستخدمة في مرحلة التحليل وإضافة صفوف جديدة.
28
تحديد الصفوف
العنوان Title
الكتاب book
المجلة magazine
النسخة item
المستعير borrower
اإلعارة loan
الحجز reservation
29
تحديد العالقات بين الصفوف
بعد تحديد صفوف المجال األساسية يجب البدء بتحديد العالقات بين هذه
الصفوف ,بشكل عام يوجد ثالث عالقات شائعة بين الصفوف وهذه
العالقات هي :
.Association
Generalization
Aggregation and composition
جميع هذه العالقات تتصف بالصفة المتعدية أي لو كان الصف Aيرتبط
بالصف Bو الصف Bيرتبط بالصف Cفإن الصف Aيرتبط بالصف Cوال
داعي لذكر هذه العالقة.
30
تحديد العالقات بين الصفوف :
بالعودة إلى نظامنا نجد العالقات التالية :
عالقة Generalizationبين الصف Bookوالصف .Title
عالقة Generalizationبين الصف Magazineوالصف .Title
استنتجنا هاتين العالقتين من خالل العبارة :تضم المكتبة مجموعة ضخمة من العناوين
وهذه العناوين قد تكون عبارة عن كتب أو مجالت.
عالقة associationبين الصف Titleوالصف .Item
استنتجنا هذه العالقة من خالل العبارة :ومن الجدير بالذكر أن المكتبة تقوم بشراء أكثر
من نسخة لكل عنوان.
عالقة associationبين الصف Titleوالصف .Reservation
استنتجنا هذه العالقة من العبارة :وإلرضاء المستعيرين تسمح المكتبة بعملية الحجز
حيث يقوم المستعير بحجز الكتاب في حال عدم توفر نسخ منه.
عالقة associationبين الصف Borrowerوالصف .Reservation
استنتجنا هذه العالقة من العبارة :وإلرضاء المستعيرين تسمح المكتبة بعملية الحجز
حيث يقوم المستعير بحجز الكتاب في حال عدم توفر نسخ منه
31
تحديد العالقات بين الصفوف
لماذا لم نضع عالقة بين الصف Borrowerوالصف Titleعلى أساس أن المستعير
يقوم بحجز عنوان ؟
الجواب هو أن هذه العالقة صحيحة ولكن المستعير ال يرتبط بالعنوان إال من خالل
حجزه له أي أنه لوال عملية الحجز لما كان هناك أي عالقة بين المستعير والعنوان.
ولو عدنا إلى العالقات نجد بأنه توجد عالقة بين المستعير والحجز وبين الحجز
والعنوان ونتيجة لذلك توجد عالقة بين المستعير والعنوان ( العالقات متعدية ).
عالقة associationبين الصف Borrowerوالصف .Loan
استنتجنا هذه العالقة من العبارة :يقوم عامل المكتبة بإعارة الكتب للمستعير وتسجيل
اإلعارات يوميا.
عالقة associationبين الصف Loanوالصف . Item
استنتجنا هذه العالقة من العبارة :يقوم عامل المكتبة بإعارة الكتب( بالطبع المقصود
نسخة من الكتاب ) للمستعير وتسجيل اإلعارات يوميا.
32
تحديد الواصفات و عمليات كل صف
تتم في هذه المرحلة تحديد الواصفات Data Membersوالعمليات أو الطرق
Methodsالخاصة بكل صف .
يتم تحديد الواصفات والعمليات بعمومية ,وليس هناك أي مبرر للخوض في
تفاصيلها ,فال داعي لتحديد وسطاء كل طريقة بالضبط ,يكفي في كثير من
األحيان ذكر اسم الطريقة فقط ,على أن يتم في مرحة التصميم تحديد تفاصيل
كل طريقة.
33
تحديد الواصفات
Title : name , author, isbn
Item : id
Borrower : fname, lname , address , phone , job
Reservation : date
Loan : date
34
تحديد الطرق
ربما كان تحديد طرق الصف أصعب من تحديد مواصفاته ,ولكن ما يسهل
تحديد طرق الصف هو تحديد األفعال في نص النظام ,ثم معرفة الصفوف
المسؤولة عن تأدية هذه األفعال ,بشكل عام يملك كل صف الطرق التالية :
)(Save
)(Find
)(Delete
هناك طريقة جيدة لربط هذه الطرق مع الصفوف ,وهذه الطريقة تعتمد على
رسم sequence diagramالتي تعبر عن كيفية تراسل األغراض مع بعضها
البعض وكل رسالة ستمثل طريقة من طرق الصف وستضاف هذه الطريقة
مباشرة إلى الصف المناسب وهذا ما سنراه الحقا.
35
Class diagram
36
واضح من المخطط أنه تم تعريف الـ multiplicityلجميع العالقات بين
الصفوف فمثال نالحظ وجود العبارة 0..1بجانب نهاية العالقة associationبين
الصفين Itemو Loanمن جهة الصف , Loanهذه العبارة تشير إلى التعددية
multiplicityلعالقة االرتباط بين الصفين .عبارة 0..1تشير إلى أن Item
يحتوي على عدد من األغراض محصورة ضمن المجال ] [0 1من نمط الصف
.Loan
37