You are on page 1of 37

‫هندسة برمجيات‬

‫هندسة الحاسبات والتحكم اآللي‬


‫المحاضرة الثالثة‬
‫تحديد الصفوف‬
‫‪ ‬كما هو الحال مع حاالت االستخدام ‪ ,‬نستطيع إسناد المتطلبات الوظيفية إلى‬
‫صفوف الكيانات وذلك بقصد استخراج الصفوف التي يتألف منها النظام‪.‬‬
‫‪ ‬إن تحديد الصفوف هو عمل تكراري إذا غالبا ما تتغير قائمة الصفوف األولية‬
‫وقد تساعد بعض األسئلة في معرفة ما إذا كان مفهوم ما في التوصيف‬
‫التفصيلي للنظام صفا أم ال وهذه األسئلة هي ‪:‬‬
‫‪ ‬هل المفهوم حاوية معطيات‪.‬‬
‫‪ ‬هل له صفات منفصلة تأخذا قيما مختلفة‪.‬‬
‫‪ ‬هل سيكون له عدة أغراض‪.‬‬
‫‪ ‬هل ينتمي إلى نطاق فضاء التطبيق‪.‬‬

‫‪2‬‬
‫مخطط الصفوف‬
‫‪ ‬يسمى هذا المخطط أيضا المخطط البنيوي الساكن ‪.‬‬
‫‪ ‬يعتبر العمود الفقري تقريبا لكل الطرق غرضية التوجه ( ‪. ) OO Methods‬‬
‫‪ ‬يعرف بمجموعة من العناصر‪:‬‬
‫‪ ‬الصفوف ‪.classes‬‬
‫‪ ‬الواجهات ‪.interfaces‬‬
‫‪ ‬العالقات ‪ relationships‬فيما بينها‪.‬‬

‫‪3‬‬
‫‪Class‬‬
‫‪ : Class ‬يعبر عنه بيانيا بمستطيل مقسم إلى ثالثة أقسام بشكل أفقي‪ .‬يحتوي‬
‫القسم األول اسم الصف ‪ ,‬يحتوي القسم الثاني قائمة بالواصفات ‪attributes‬‬
‫وتوضع قائمة بالعمليات في القسم الثالث واألخير‪.‬‬
‫‪ClassName‬‬
‫‪Attribute:Type:initialvalue‬‬

‫‪Operation(arg_list) return type‬‬

‫‪‬يكتب اسم الصف بخط عريض ( ‪ )bold‬ويبدأ اسمه بحرف كبير وإذا‬
‫كان مؤلفا من أكثر من كلمة فتفصل عن بعضها بـ (_) وتبدأ كل كلمة‬
‫بحرف كبير‪.‬‬

‫‪4‬‬
‫إمكانية الرؤيا‬
‫‪ ‬تستخدم عالمات الرؤيا لتدل على من يستطيع الوصول إلى المعلومات‬
‫المحتواة ضمن الصف وهي ثالثة أشكال ‪:‬‬
‫‪ : Private visibility ‬تخفي المعلومات عن أي شيء خارج الصف ويعبر‬
‫عنها بإشارة (‪.)-‬‬
‫‪ : Public visibility ‬تسمح لكل الصفوف األخرى أن ترى المعلومات المحتواة‬
‫في الصف ‪ ,‬يعبر عنها بإشارة ( ‪.) +‬‬
‫‪ : Protected visibility ‬تسمح للصفوف األبناء فقط بالوصول إلى المعلومات‬
‫التي يتم توريثها من الصف األب ‪ ,‬يعبر عنها بإشارة )‪.(#‬‬

‫‪5‬‬
Example UML Class
Name, bold

Invoice Public, typed

+ amount :Real Default value


+ date : Date = Current_date
+ customer : String Private, typed,
+ specification : String default value
- administrator: String = “Unspecified” Class variable
- number_of_invoices: Integer
+ status: Status = unpaid {paid, unpaid} Property

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‬لكي تقوم بعملها‪.‬‬

‫‪The dependent class‬‬


‫‪Dependency‬‬ ‫‪The independent class‬‬
‫‪Cart‬‬
‫‪Relationship‬‬
‫‪Product‬‬
‫)‪add(Product p‬‬

‫الوظيفة )‪ add(Product‬الموجودة في الصف )‪ (Cart‬تحتاج لكيان من الصف‬


‫)‪ (Product‬لكي تقوم بإضافته ‪.‬‬

‫‪9‬‬
‫‪Association Relationship‬‬
‫‪‬توضح عالقة االقتران بأن الصف األول يتصل بشكل عام مع الصف الثاني فمثال‬
‫الموظف يعمل في الشركة ‪ ,‬والطالب يسجل في الجامعة‪.‬‬
‫‪‬تؤمن عالقة االقتران بين الصفوف مسارات تسهل تعاون األغراض حيث تستخدم‬
‫األغراض هذه المسارات لتبادل الرسائل ‪.‬‬
‫‪‬تمثل هذه العالقة بخط مستقيم يربط بين الصفين‪.‬‬
‫المثال التالي يوضح عالقة عمل تربط بين الجامعة واألستاذ الجامعي‪.‬‬
‫‪Association Name‬‬ ‫‪Association‬‬

‫‪Professor‬‬ ‫‪Works for‬‬ ‫‪University‬‬


‫‪Employee‬‬ ‫‪Employer‬‬

‫‪Class‬‬ ‫‪Role Names‬‬

‫‪association means that a class will actually contain a reference to‬‬


‫‪an object, or objects, of the other class in the form of an attribute.‬‬
Association Relationship
.‫المثال التالي يوضح عالقة ” يدير ” تربط بين المدير والقسم ألن كل مدير يدير قسم‬
Association Name
Association

Manager Department
Manages of

manager managed

Class Role Names

Role names indicate what role a class plays in a relationship.

11
‫درجة االقتران‬
‫‪‬تعرف درجة االقتران عدد الصفوف المرتبطة بعالقة االقتران ‪ ,‬ويكون في معظم‬
‫األحيان اقترانا ثنائيا أي االرتباط بين صفين ‪.‬‬

‫‪‬يمكن أن تعرف عالقة االقتران على صف واحد ويدعى عند ذلك اقترانا أحاديا ‪,‬‬
‫يعبر هذا االقتران عن عالقة تربط بين أغراض الصف نفسه ‪ ,‬وكمثال على هذا‬
‫النوع ليكن لدينا الصف ‪ employees‬ممثال لجميع الموظفين ‪ ,‬إن موظفا ( غرضا من‬
‫الصف ‪ )employee‬قد يديره ‪ managed by‬موظف آخر‪.‬‬

‫‪Managed by‬‬

‫‪Employee‬‬ ‫‪Manager of‬‬

‫‪12‬‬
‫تعدد االقتران ‪association‬‬
‫‪multiplicity‬‬
‫‪ ‬يعرف تعدد االقتران عدد األغراض من صف ما والمرتبطة بغرض واحد من‬
‫الصف اآلخر‪.‬‬
‫‪ ‬يتم التعبير عن تعدد االقتران بكتابة عدد صحيح أو مجال من األعداد الصحيحة‬
‫من الشكل ‪ n1..n2‬حيث يعرف العدد ‪ n1‬الحد األدنى من األغراض المرتبطة‬
‫و ‪ n2‬الحد األعلى وعادة ما يتم استخدام * بدال من ‪ n2‬إذا لم نكن نعرف قيمة‬
‫هذا العدد بدقة ‪.‬‬
‫‪ ‬القيم األكثر تكرار مبينة في الجدول التالي ‪:‬‬

‫الحظ أن ‪ 0‬تعني أن تشير إلى أن عضوية الغرض في االقتران خيارية أما ‪ 1‬فهي تشير إلى أن العضوية‬
‫‪13‬‬ ‫إلزامية‬
‫تعدد االقتران ‪association‬‬
‫‪multiplicity‬‬
‫في نظام التدريس ‪ ,‬كل مدرس يقوم بتدريس مجموعة مناهج ‪ ,‬كما أن المنهاج الواحد قد‬
‫يقوم بتدريسه أكثر من مدرس ‪ ,‬وهذا يوافق تعدد االقتران المبين في الشكل التالي‪:‬‬

‫‪Teacher‬‬ ‫‪Course‬‬

‫*‪1..‬‬ ‫*‪1..‬‬

‫أما لو أن مدرسا واحدا هو المسؤول عن كل منهاج ويمكن للمدرس الواحد أن يكون‬


‫مسؤول عن عدة مناهج أو ال يكون مسؤول عن أي منهاج نستطيع التعبير عن تعددية‬
‫االقتران بالصورة التالية ‪:‬‬
‫‪Teacher‬‬ ‫‪Course‬‬

‫‪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‬لعدة صفوف‪.‬‬
‫‪ ‬تمثل بخط مستقيم يربط بين الصفوف ينتهي بمعين مظلل يتجه ناحية الصف الذي يمثل الكل‪.‬‬

‫عالقة التركيب ‪ Composition‬التالية توضح أن الجدول الدراسي جزء من الطالب‪.‬‬


‫‪Whole‬‬ ‫‪Part‬‬

‫‪Student‬‬ ‫‪Schedule‬‬
‫من الواضح أنه إذا تم حذف الطالب فإن‬
‫الجدول الدراسي للطالب يحذف تلقائيا ولن‬
‫يوجد جدول دراسي إال إذا وجد الطالب‬

‫‪Composition‬‬
‫‪16‬‬
‫‪Composition Relationship‬‬
‫‪Chapter‬‬ ‫‪Section‬‬
‫‪Book‬‬
‫‪1‬‬ ‫*‬ ‫‪1‬‬ ‫*‬

‫إن غرض من الصف ‪ Book‬هو تركيب من أغراض تعود للصف ‪ , Chapter‬وكل‬


‫غرض من الصف ‪ Chapter‬هو تركيب من أغراض من الصف ‪ , Section‬وال يملك‬
‫الغرض ‪ Chapter‬حياته المستقلة فهو موجود فقط ضمن الغرض ‪ Book‬و العالقة‬
‫هي ‪.composition‬‬

‫‪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

Car Truck Trailer


Subclass size tonnage
getTax( )

19
Example: Multiple Inheritance
‫ صف يرث عدة صفوف‬
If a class has more than one parent, it has multiple inheritance

FlyingThing Animal

multiple
inheritance

Airplane Helicopter Bird


Bird Wolf Horse

20
‫الصف المجرد ‪Abstract Class‬‬
‫يعتبر الصف المجرد من المفاهيم الهامة في النمذجة وهو ينتج عن مفهوم الوراثة فالصف‬
‫يكون مجردا إذا احتوى على عملية واحدة مجردة على األقل‪ .‬والعملية المجردة هي التي‬
‫يعرف لها توقيع (اسم وقائمة وسطاء) في الصف األب بينما تؤجل الطريقة (الكود) إلى‬
‫الصفوف األبناء‪ .‬الصف المجرد هو صف أب ال يمكن أن يكون له كيانات والبد من وجود‬
‫صفوف أبناء يرثونه‪ .‬يكتب اسم الصف المجرد بخط مائل‪.‬‬
‫‪Video‬‬ ‫‪Borrower‬‬

‫‪name‬‬
‫‪number‬‬
‫‪number‬‬

‫)(‪<<abstract>> rental Charge‬‬ ‫)(‪<<abstract>> borrows‬‬

‫‪VideoTape‬‬ ‫‪VideoDisk‬‬ ‫‪Professor‬‬ ‫‪Student‬‬

‫‪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); }

public class SMTPMailSystem implements EmailSystem


{
public void send(Message message)
{
// Implement the interactions with an SMTP server to send the 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‬‬

You might also like