Download as pdf or txt
Download as pdf or txt
You are on page 1of 25

‫الجامعة العربية الخاصة للعلوم والتكنولوجيا‬

‫كلية الهندسة المعلوماتية‬


‫قسم تقانة المعلومات‬
‫السنة الثالثة‬

‫هندسة البرمجيات (‪)1‬‬


‫المحاضرة الخامسة‬

‫م‪ .‬ابراهيم أيوب‬


‫م‪ .‬اسماء الحداد‬

‫‪11/12/2023‬‬

‫‪1‬‬
‫‪Class Diagram‬‬
‫■ الـ ‪ Class Diagram‬يعبر عن الهيكلية والبنية الداخلية للنظام‪.‬‬
‫■ لذلك يصنف الـ ‪ Class Diagram‬على أنه ‪ Structure Model‬ويعطي‬
‫تصور مبدئي (أولي) عن بنية النظام‪.‬‬
‫■ يتألف أي نظام من مجموعة من األغراض (‪ )Objects‬تتفاعل مع بعضها لتحقيق‬
‫الغرض من النظام‪.‬‬
‫■ يعد هذا المخطط أقرب أنواع المخططات لمهندسي البرمجيات أثناء عملهم في‬
‫تطوير الكود البرمجي للتطبيق‪.‬‬

‫‪2‬‬
‫‪Class Diagram‬‬
‫■ الفكرة األساسية تكمن بمعرفة الـ ‪ objects‬التي تتعامل مع بعضها البعض ثم نقوم‬
‫بعملية ‪ Abstraction to the class‬وحتى نستطيع معرفة الـ ‪objects‬‬
‫والتعبير عنها نحتاج لفهم كامل عن الـ ‪ requirements‬بشكل دقيق‪.‬‬
‫■ ونقصد بالـ ‪ Abstraction‬ما يلي ‪:‬‬
‫في حال لدينا ‪ 3‬طالب كل طالب له اسم مختلف وعمر مختلف وشهادات‬
‫مختلفة وعندما نرى أن كيان الطالب يفيد في المشروع ونريد احتواء هذه‬
‫المعلومات المختلفة عنه نقوم بعملية التجريد حيث يصبح لدينا كالس‬
‫‪ Student‬يحتوي على ‪ Attributes‬وهي االسم والعمر والشهادات بغض‬
‫النظر عن اختالفها ‪.‬‬
‫■ إذا ً بالبداية نقوم بالتفكير بالـ ‪ objects‬التي احتاجها في المشروع وما هي الـ ‪data‬‬
‫المتعلقة بها ثم أقوم بتجريد الـ ‪ objects‬إلى ‪ classes‬وتحويل الـ ‪ data‬إلى‬
‫‪. attributes‬‬

‫‪3‬‬
Class Diagram

4
Class Diagram Components
:)Class Diagram( ‫■ المكونات األساسية لمخطط الصفوف‬
:‫ أقسام رئيسية‬3 ‫ ويمثل بصندوق مكون من‬Class ‫❖ الصف‬
Class Name ‫ اسم الصف‬.1
.‫ تصف بنية الصف‬Attributes ‫ الواصفات‬.2
.)Methods( ‫ تصف سلوك الصف‬Operations ‫ العمليات‬.3

Class Name

Attributes

Operations

5
‫‪Class Diagram Components‬‬
‫‪ : Class name .1‬يظهر دائما في الجزء العلوي من المستطيل ويكتب أول حرف‬
‫كبير ‪ ،‬يعبر عن الـ ‪ objects‬التي يمثلها ويجب أن يكون اسمه فريد ‪Unique‬‬
‫‪name‬‬
‫‪ :Class attributes .2‬الواصفة )‪ )attribute‬هي اسم إحدى خصائص الصف‬
‫الذي يوصف الكائنات التابعة للصف‪.‬‬
‫➢ الواصفات قد تكون‪ Private :‬أو ‪ Public‬أو ‪ Protected‬أو ‪ Derived‬ويمكن‬
‫كتابة محدد الوصول )‪ )visibility‬بجانب الواصفة كما يمكن عدم كتابتها‪.‬‬
‫)‪Private visibility : (-‬‬
‫)‪Public Visibility: (+‬‬
‫)‪Protected Visibility: (#‬‬
‫)\(‪Derived :‬‬

‫‪ :Class operations .3‬تعرف العمليات السلوكيات التي يقوم بها الصف وتظهر‬
‫في القسم الثالث من المستطيل‪.‬‬

‫‪6‬‬
‫‪Class Diagram Components‬‬
‫➢ يتم كتابة الـ ‪ Attributes‬كما يلي ‪:‬‬
‫‪visibility / name : type = default‬‬
‫✓ ‪ /‬توضع في حال كانت الواصفة مشتقة‬
‫✓ }‪visibility = {+|-|#‬‬
‫➢ ويتم كتابة الـ ‪ Operations‬كما يلي‪:‬‬
‫‪Visibility operationName (parameters, ...) : ReturnType‬‬
‫✓ حيث تتم كتابة الـ ‪ parameter‬بالشكل التالي‪:‬‬
‫‪parameter_name : type = default_value‬‬

‫❖ مالحظة‪ :‬تتم كتابة السمات والعمليات على قاعدة الـ ‪ camel case‬أي أن يكون‬
‫الحرف األول من الواصفة أو العملية صغير وإذا كانت الكلمة مركبة يكون الحرف‬
‫األول من الكلمات التي تلي الكلمة األولى كبير مثال‪removeBook :‬‬

‫‪7‬‬
Class Diagram Components

8
‫‪Class Diagram Relations‬‬
‫■ العالقات بين الصفوف‪:‬‬
‫وهي األفعال التي تربط بين الصفوف في توصيف النظام‪ .‬وهي‪:‬‬

‫‪9‬‬
Class Diagram Relations
‫( إلى‬generalization) ‫ يشير التعميم‬:Generalization .1
‫) من‬behavior) ‫) والسلوك‬attributes) ‫( الواصفات‬inheritance) ‫وراثة‬
. subclass ‫( إلى الـ‬superclass) ‫الطبقة العليا‬

Person

Student

10
‫‪Class Diagram Relations‬‬
‫‪ :Dependency .2‬هي عالقة داللية )‪ (semantic relationship‬بين‬
‫عنصرين أو أكثر وتوجد عندما يكون ‪ class‬معتمد على وجود ‪ class‬آخر من‬
‫خالل العمليات )‪ (Operation‬الخاصة به‪.‬‬
‫■ مثال‪:‬‬

‫➢ ال يمكن تنفيذ إجرائية إضافة ‪ Product‬الموجودة في ‪ Cart class‬إال بوجود‬


‫‪class Product‬‬

‫‪11‬‬
‫‪Class Diagram Relations‬‬
‫مثال‪:‬‬ ‫■‬

‫➢ توجد التبعية من ‪ CourseSchedule‬إلى ‪ Course‬نظرا ً الستخدام ‪Course‬‬


‫في كل من عمليتي اإلضافة واإلزالة الخاصة ب ‪CourseSchedule‬‬
‫■ مثال‪:‬‬

‫‪12‬‬
‫‪Class Diagram Relations‬‬
‫‪ :Association .3‬يشير االرتباط إلى كيفية تواصل الصفوف مع بعضها البعض‪،‬‬
‫يرمز له بخط متصل يربط بين صفين‪.‬‬
‫➢ تربط هذه العالقة بين الصفوف بنا ًء على عالقة معينة (يدرس‪ ،‬يدير‪ ،‬يعمل‪)....،‬‬
‫يشار إلى تعدد الـ ‪ Association‬عن طريق إضافة التعددية )‪،)multiplicity‬‬
‫والتعددية هي إشارة إلى عدد العناصر التي يمكن أن تشارك في العالقة أو العدد‬
‫المسموح به من مثيالت العنصر)‪ )instances of element‬وتمثل بشكل أرقام‬
‫توضع على أطراف العالقة (مثل‪ *…1 :‬التي تعبر عن وجود كائن واحد على‬
‫األقل)‪.‬‬
‫ضا اإلشارة إلى سلوك كائن ما في االرتباط باستخدام أسماء األدوار‪.‬‬
‫➢ يمكننا أي ً‬

‫‪13‬‬
‫‪Class Diagram Relations‬‬
‫■ مثال‪ :‬في المثال التالي تمت اإلشارة إلى سلوك الطالب في عالقته مع المعلم بكتابة‬
‫اسم الدور وهو (يتعلم من) وتمت اإلشارة إلى سلوك المعلم في العالقة وهو‬
‫(يدرس)‪ .‬كما أشرنا إلى التعددية (‪ )multiplicity‬عن طريق القيم الموجودة على‬
‫أطراف العالقة‪.‬‬

‫■ مثال‪ :2‬الزبون يطلب ‪order‬‬

‫‪14‬‬
‫‪Class Diagram Relations‬‬
‫❖ ‪ :Multiplicity‬يحدد عدد الـ ‪ instances‬من الصف التي يمكن ان ترتبط ضمن‬
‫العالقة كما أنها تحدد اذا كانت العالقة اختيارية ام اجبارية حيث انها تحدد العدد‬
‫األصغري و األعظمي من الـ ‪ instances‬التي يمكن ان تشارك بهذه العالقة‬

‫‪15‬‬
‫‪Association Class‬‬
‫ضا‬
‫❖ في بعض األوقات يمكن أن تنتج الـ ‪ Associations‬بين صفين أي ً‬
‫كائنات )‪ (objects‬بحد ذاتها‪ ،‬بطريقة مشابهة لطريقة كسر عالقة ‪many to‬‬
‫‪ many‬في الـ ‪ ERD‬أي بواسطة ‪ class‬وسيط يحوي معلومات عن العالقة‬
‫(الرقم المميز للغرضين المرتبطين وتاريخ االرتباط مثالً) تسمى هذه الصفوف‬
‫بصفوف االرتباط ‪.association classes‬‬
‫■ مثال‪:‬‬
‫الطالب يمكن أن يسجل على أكثر من مادة ‪ ,‬وكذلك المادة سوف يسجل عليها أكثر من‬
‫طالب‪ ،‬ولكن نتيجة لعملية التسجيل هذه فإن الطالب سيخضع المتحان في المادة التي‬
‫سجل عليها وبالتالي يجب تخزين العالمة‪ ,‬فأين سيتم تخزين هذه العالمة ؟‬

‫‪16‬‬
‫‪Class Diagram Components‬‬
‫❖ ويندرج أيضا تحت عالقة الـ ‪ Association‬عالقتين هما ‪:‬‬
‫‪ (1‬عالقة التجميع ‪ :Aggregation‬هي حالة خاصة من ‪ Association‬تربط‬
‫بين الكل والجزء )‪ )Whole-part‬أو بين صف وأجزائه‪ ،‬حيث تدل عالقة‬
‫التجميع على أن صفًا ما (‪ )Whole‬يتكون من مجموعة من الصفوف األخرى‬
‫(‪ )Part‬كأجزاء منه‪.‬‬
‫➢ ويشار إلى هذه العالقة بشكل معين موجود على عالقة الـ ‪ Association‬في جهة‬
‫الكل )‪. (Whole‬‬
‫➢ في عالقة التجميع حياة الجزء غير مرتبطة بحياة الكل بمعنى أن الجزء من الممكن‬
‫أن يوجد في حالة عدم وجود الكل‪ ،‬فمثالً فريق كرة القدم ذهاب الفريق (دمار‬
‫الفريق) ال يؤدي إلى ذهاب الالعبين (دمار الالعبين)‬

‫‪17‬‬
‫‪Class Diagram Components‬‬
‫■ مثال‪ :‬فريق كرة القدم (صف ‪ )Team‬يحوي بداخله عدد من الالعبين (صف‬
‫‪ )Player‬والالعب يمكن أن يوجد خارج الفريق وال يموت بموت الغرض من نوع‬
‫‪.team‬‬

‫➢ برمجيا ً‪:‬‬
‫;)(‪Player p1= new Player‬‬
‫;)(‪Team t= new Team‬‬

‫‪18‬‬
‫‪Class Diagram Components‬‬
‫‪ (2‬التركيب ‪ :Composition‬عالقة قوية (‪ )Strong all part‬ويكون عمر‬
‫الكائنات لألجزاء متزامن مع الكل بحيث إذا انهار الكل انهارت األجزاء‪.‬‬
‫➢ يشار إلى هذه العالقة بشكل معين مطموس موجود على عالقة الـ ‪Association‬‬
‫في جهة الكل )‪،(Whole‬‬
‫➢ فمثال موت جسم االنسان يؤدي إلى موت جميع األجهزة الموجودة فيه ‪ .‬فتكون‬
‫العالقة بينهما عالقة ‪Composition‬‬
‫■ مثال‪:‬‬

‫➢ عندما ننشئ الـ ‪ window‬يتم إنشاء ‪ scrollbar‬والـ ‪ Menu‬وعندما نغلق الـ‬


‫‪ Window‬يختفون معها ‪.‬‬

‫‪19‬‬
Class Diagram Components
:‫■ مثال‬

Class Chapter { }
Class Book {
Book ( ){
Chapter stud = new Chapter ()
}
}
: ‫وعند االستدعاء‬
Book bb = new Book();

20
Class Diagram Components
We see the following relationships:
•owners feed pets, pets please owners (association)
•a tail is a part of dog (aggregation / composition)
•a dog is a kind of pet ( generalization)

21
‫‪Class Diagram Components‬‬
‫‪ .4‬عالقة التحقيق‪ :‬هي عالقة للواجهة)‪ )interface‬يعبر عن وراثة من واجهة تسمى‬
‫بـ ‪ implementation‬يمثل بخط مقطع وتكون العالقة مرتبطة بواجهة‬
‫‪( abstract‬يكتب اسمها بخط مائل ‪.)italic‬‬

‫‪22‬‬
Example about University System

23
Example about Customer Order

24
‫الوظيفة‬

‫رسم مخطط الـ ‪ Class Diagram‬لمشروعك‬

‫‪25‬‬

You might also like