سلسله مراتب نمودارهای یو ام‌ال ۲ به صورت یک نمودار کلاس نمایش داده شده است.
در حیطه مباحث مهندسی نرم‌افزار، **نمودار کلاس** در زبان مدل سازی یکپارچه یک نوع از نمودارهای ساختاری ایستاست که ساختار یک سیستم را با نمایش کلاسهای سیستم، خصوصیات آنها و روابط بین آنها توصیف می‌کند.

مرور کلی
--------

نمودار کلاس اصلی‌ترین جزء سازنده در مدلسازی شی گراست. این نمودار هم برای مدلسازی مفهومی کلی برنامه و هم برای مدلسازی طراحی جزئیات برای ترجمه به کد برنامه‌نویسی به کار می‌رود. یک کلاس در این نمودار به صورت جعبه مستطیلی نمایش داده می‌شود که از سه بخش تشکیل شده است:

یک کلاس با سه قسمت تشیل دهنده.
* قسمت بالایی *نام کلاس* را نمایش می‌دهد
* قسمت میانی *خصوصیات کلاس* را نمایش می‌دهد
* قسمت پایینی شامل *متد*ها یا *عملیاتی* است که کلاس انجام می‌دهد یا بر روی آن انجام می‌شود.

عناصر یک نمودار کلاس
--------------------

### کلاس

یک کلاس نمایشگر یک موجودیت از یک سیستم معین است که پیاده‌سازی کپسوله شده (encapsulated) ای از یک کارکرد موجودیت داده‌شده را ارائه می‌دهد. این کارکردها از طریق متدهای یک کلاس عرضه می‌شوند. کلاس همچنین دارای ویژگیهایی است که خصایص یکتای کلاس را تعریف می‌کنند. در مراحل اولیه انعقاد طراحی سیستم، کلاسها را کلاس‌های تحلیلی یا کلیشه (stereotype) می‌نامند. کلاس‌های تحلیلی بر اساس رفتارشان به سه دسته تقسیم می‌شوند:

* کلاس‌های مرزی: در یک سیستم چندلایه‌ای (multi-tier) ایده‌آل کاربر تنها با کلاس‌های مرزی تعامل دارد.
* کلاس‌های کنترلی: وظیفه این کلاس‌ها انتقال کنترل از کلاس‌های مرزی به کلاس‌هایی است که منطق برنامه را پیاده می‌کنند.
* کلاس‌های موجودیتی: این کلاس‌ها حاوی منطق اصلی برنامه هستند.

### واسط

*واسط*ها (Interface) گونه‌ای از کلاسهای تغییر یافته هستند که به جای پیاده‌سازی کارکرد تنها آن را تعریف می‌نمایند. واسط‌ها همه ویژگی‌های کلاسها را دارند و تنها تفاوتشان این است که در واسط متدها فقط تعریف می‌شوند و پیاده‌سازی در کلاسها انجام می‌شود.

### بسته

*بسته* (Package) این امکان را فراهم می‌کند که کلاسها و واسط‌هایی را که به یکدیگر شبیه یا مرتبط اند را در گروه‌هایی جمع‌آوری نمود. گروه‌بندی عناصر طراحی در یک عنصر بسته باعث خوانایی بیشتر نمودارهای کلاس می‌شود.

دسترسی به اعضای کلاس‌ها
-----------------------

یو ام‌ال سازوکارهای ویژه‌ای برای نمایش اعضای کلاس (متدها و خصوصیت‌ها) و اطلاعاتی اضافی راجع به آنها ارائه می‌دهد.

### قابلیت دید(Visibility)

برای مشخص کردن قابلیت دید هر یک از اعضای کلاس (یعنی متدهاوخصوصیات) از نمادهایی که در جدول زیر آمده‌اند استفاده می‌شود که می‌بایست قبل از نام کلاس قرار گیرند:

|  |  |  |
| --- | --- | --- |
| **+** | عمومی(public) | قابل مشاهده برای تمام اجزایی که به فضای نام مالک آن دسترسی دارند. |
| **#** | حفاظت شده(protected) | قابل مشاهده برای تمام اعضایی که با فضای نام مالک آن رابطه تعمیم دارند. |
| **–** | خصوصی(private) | تنها در داخل فضای نام مالک آن قابل مشاهده است. |
| **~** | بسته(package) | در مالکیت فضای نامی است که خود یک package نیست، و توسط عناصری که در همان Package فضای نام مالک آن قرار دارند قابل مشاهده است. تنها عناصری که در مالکیت Packeageها نباشند می‌توانند این سطح از قابلیت دید را دارا باشند. هر عنصری که با قابلیت دید package مشخص شود برای تمام عناصری که در نزدیکترین package دربرگیرنده قرار دارند قابل مشاهده خواهد بود. خارج از این نزدیکترین package در بر گیرنده، عنصر دارای قابلیت دید package دیده نخواهد شد. |

### حوزه(Scope)

یو ام‌ال دو نوع حوزه مختلف برای اعضا تعیین می‌کند: نمونه(instance) و دسته کننده (Classifier). در مورد اعضای *نمونه*ای، حوزه، یک نمونه خاص است. برای خصوصیات این بدان معناست که مقدار خصوصیتها در نمونه‌های مختلف تغییر می‌کند. برای متدها بدان معنی است که فراخوانی آن روی وضعیت نمونه تأثیر می‌گذارد یا به عبارت دیگر تنها روی خصوصیات نمونه‌ای تأثیر دارد.
در اعضای *دسته کننده*، حوزه کلاس است. برای خصوصیات این بدان معناست که مقدار خصوصیت در تمام نمونه‌ها یکسان است. برای متدها این بدان معناست که فراخوانی این متدها بر روی وضعیت نمونه‌ها تأثیری ندارد. در بسیاری از زبانهای برنامه‌نویسی دسته کننده‌ها را با کلمه static نشان می‌دهند. در صورت نیاز به تعریف عضوی از نوع دسته کننده باید زیر آن خط کشید، در غیر این صورت به عنوان پیش فرض حوزه آن نمونه‌ای در نظرگرفته می‌شود.

منابع
-----

1. ↑  Scott W. Ambler (2009) نمودارهای کلاس یو ام‌ال 2. Webdoc 2003-2009. دسترسی در دسامبر 2, 2009
2. 1 2 3  نمودار کلاس یوام‌ال 14 مه 2003. بازیابی شده در 16 آگوست 2010
3. 1 2  مشخصات زبان مدلسازی یکپارچه نسخه 2.2 (OMG UML) : مه 2009. بازیابی شده در 16 آگوست 2010.

پیوند به بیرون
--------------

* مقدمه‌ای بر نمودار کلاس دیاگرام یو ام‌ال ۲
* راهنمای نمودار کلاس یو ام‌ال ۲
* مقدمه‌ای بر نمودار کلاس- آی بی ام
* مشخصات رسمی یو ام‌ال ۲
* نمودار کلاس یو ام‌ال ۲

| * ن
* ب
* و
زبان مدل‌سازی یکپارچه |
| --- |
| کنشگرها | 
* *سازمان‌ها*
	+ گروه مدیریت شیء
	+ UML Partners
* *اشخاص*
	+ گریدی بوچ
	+ ایوار جاکوبسون
	+ جیمز رامبا

 |  |
| مفاهیم | 

|  |  |
| --- | --- |
| شیءگرا | 
* برنامه‌نویسی شیءگرا
* طراحی و آنالیز شئ‌گرا
* Object-oriented modeling

 |
| ساختار | 
* کنشگر
* صفت
* Artifact
* کلاس
* Component
* Interface
* شیء
* Package
* Profile diagram

 |
| رفتار | 
* Activity
* Event
* فرستادن پیام
* اسلوب
* حالت
* مورد کاربرد

 |
| روابط | 
* Association
* Composition
* جفتگری
* تعمیم (or وراثت)

 |
| توسعه‌پذیری | 
* پروفایل یو ام‌ال
* Stereotype

 |
| سایر | 
* نمودار کلاس

 |

 |
| نمودارها | 

|  |  |
| --- | --- |
| ساختاری | 
* نمودار کلاس
* دیاگرام اجزا
* Composite structure
* Deployment
* نمودار شئ
* Package

 |
| رفتاری | 
* نمودار فعالیت
* ماشین حالت یو.ام.ال
* نمودار مورد کاربرد

 |
| تعاملی | 
* نمودار ارتباطی
* نمودار توالی
* Interaction overview
* Timing

 |

 |
| زبان‌های مشتق‌شده | 
* زبان مدل‌سازی سیستم‌ها
* UML eXchange Format (UXF)|
* XML Metadata Interchange (XMI)|
* Executable UML (xUML)|

 |
| سایر موضوعات | 
* Glossary of UML terms
* فرایند یکپارچه رشنال
* مقایسه ابزارهای زبان مدل‌سازی یکپارچه
* Object Modeling in Color

 |