SE1-Lecture - 3 - UML
SE1-Lecture - 3 - UML
__UML Part
• تُستخدم مخططات الصفوف لنمذجة البنية الساكنة للنظام ,بحيث تصف عناصر النظام والعالقات
بينها
• في سياق البرمجة الغرضية التوجه ( ،)OOPيصور مخطط الصفوف الصفوف التي يتكون منها
النظام البرمجي والعالقات بين هذه الصفوف
• لتمثيل حاالت من الصفوف التي تم تصميمها في مخطط الصفوف يتم استخدام مخطط األغراض
Object Diagram
Class Name
Attributes
{readOnly}
= "Syria"
Operations
{readOnly}
= "Syria"
• تُوضع عالمة من العالمات التالية قبل اسم الصفة لتوضح مجال رؤيتها (مشابهة لمحددات
: مثالJava ) فيAccess Specifiers الوصول
public + ▪
private - ▪
protected # ▪
package ~ ▪
1 هندسة برمجيات -5-
- Attribute Syntaxالصفات المشتّقة
}Visibility / Name : Type Multiplicity = default {Property
}{readOnly
"= "Syria
{readOnly}
= "Syria"
• اسم الصفة
{readOnly}
= "Syria"
{readOnly}
= "Syria"
{readOnly}
= "Syria"
1 هندسة برمجيات - 10 -
الخصائص- Attribute Syntax
Visibility / Name : Type Multiplicity = default {Property}
{readOnly}
= "Syria"
:المعرفة مسبقا
ّ ويمكن أن تأخذ القيم التالية,• لتعريف خاصة (أو خصائص) لصفة
,{ordered} ,{non-unique} ,{unique} ,{readOnly}
{unordered}
{unique, readOnly} :• يمكن أن نشمل أكثر من خاصة كمايلي
1 هندسة برمجيات - 11 -
- Operation Syntaxالوسطاء و نمط اإلعادة
}{readOnly
"= "Syria
:void
class Person {
public String firstName;
public String lastName;
private Date dob;
private int age;
private final int nationalIdNumber;
protected String[] address = {"Syria"};
{readOnly} public static int counter;
= "Syria"
public Date getDob() {...}
1 هندسة برمجيات - 14 -
تمثيل الصف بمستويات مختلفة من التفاصيل
Grade of details
Person
firstName
lastName
dob
getNationalIdNumber()
getCounter()
1 هندسة برمجيات - 15 -
العالقات بين الـصفوف -عالقة الربط Association
Binary Associations
Association name Reading direction
Navigability
X
Visibility Role
قابلية التنقل ()Navigability •
تشير قابلية التنقل إلى أن الغرض ( )Objectيعرف أغراض شريكه ,وبالتالي يمكنه الوصول إلى الـ
attributesو الـ operationsالمرئية الخاصة بهذه األغراض
-في المثال أعاله إلى أنه يمكن للطالب الوصول إلى الخصائص المرئية لألساتذة الذين يحضرون
محاضراتهم .في المقابل ،ال يمكن لألستاذ الوصول إلى الخصائص المرئية للطالب الذين يحضرون
محاضرته
• التعددية () Multiplicity
عدد األغراض التي يمكن أن ترتبط مع غرض واحد من الجهة المقابلة
• الدور () Role
يشير الدورإلى الطريقة التي يشارك بها الغرض في عالقة الربط ،أي الدور الذي يلعبه في العالقة
class Student{
public Professor[] lecturer;
…}
1 هندسة برمجيات - 17 -
العالقات بين الصفوف -عالقة الربط Association
Binary Associations – Further Exampels
Ternary
association
1 هندسة برمجيات - 19 -
صفوف الربط Association Classes
}{non-unique
• في المثال أعاله ,في حال إضافة } ,{non-uniqueيمكن للموظف أن يملك أكثر من عقد
عمل مع نفس الكلية
-في حال حذفها ,تكون القيمة اإلفتراضية }{unique
هندسة برمجيات 1 - 20 -
العالقات بين الصفوف -عالقة التجميع Aggregations
التجميع هو شكل خاص من أشكال الربط يستخدم للتعبير عن أن أغراض ( )Objectsلـ صف ()Class •
هي أجزاء من من أغراض لصفوف أخرى .يوجد نوعان من التجميع في :UML
-التركيب ()Composition
-التجميع المشترك ()Shared Aggregation
VS
Composition Shared Aggregation
• يوجد تبعية وجود ()existence dependency • ال يوجد تبعية وجود ( )existence dependency
بين عناصر AوB بين عناصر Aو B
-إذا ُحذف ,Bيتم حذف A -إذا ُحذف ,Bال يتم حذف A
-ارتباط قوي ()strong belonging -ارتباط ضعيف ()weak belonging
• التعددية ( )multiplicityعلى جهة Bيمكن أن • التعددية ( )multiplicityعلى جهة Bيمكن أن تكون
تكون 1كحد أقصى أكبر من 1
class StudyProgram {
private List<Course> courses;
…}
Compositions
class Building {
private final LectureHall[] lectureHalls;
Building(int numberOfLH) {
lectureHalls = new LectureHall[numberOfLH];
for (int i = 0; i < numberOfLH; i++)
lectureHalls[i] = new LectureHall("LH" + i);
}
…}
1 هندسة برمجيات - 22 -
Generalizations عالقة التعميم- العالقات بين الصفوف
Generalization notation •
Subclass Superclass
1 هندسة برمجيات - 23 -
Generalizations عالقة التعميم- العالقات بين الصفوف
An Example
Without Generalization
With Generalization
1 هندسة برمجيات - 24 -
العالقات بين الصفوف -عالقة التعميم Generalizations
Abstract Class
• تستخدم لإلشارة إلى عدم إمكانية إنشاء أغراض بشكل مباشر من الـ superclass
• يتم اإلشارة إلى الـ abstract classبطريقتين:
– } {abstractقبل اسم الـ ,classأو
– كتابة اسم الـ classبخط مائل
interface Printable{
void print();
}
1 هندسة برمجيات - 26 -
An Example - Class Diagram مخطط الصفوف
Enumeration
Data type
1 هندسة برمجيات - 27 -
مخطط األغراض Object Diagram
❖ مخطط األغراض يمثل صورة (أو )Snapshotمن األغراض في لحظة معينة من الزمن ,ولكن يمكن أن
تتطور األغراض وتتغير مع مرور الوقت
oder
http://www.uml.ac.at/en/lernen :المصدر
1 هندسة برمجيات - 29 -
3 / 2 - ملخص
An object of C is in a relationship
xor relationship with an object of A or with an
object of B but not with both
http://www.uml.ac.at/en/lernen :المصدر
1 هندسة برمجيات - 30 -
3 / 3 - ملخص
Strong
Existence-dependent parts-whole
aggregation =
relationship (A is part of B)
composition
Inheritance relationship (A
Generalization
inherits from B)
http://www.uml.ac.at/en/lernen :المصدر
1 هندسة برمجيات - 31 -