نمودار کلاس

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

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

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

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

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

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

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

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

## منابع

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

رده:نمودارهای زبان مدل‌سازی یکپارچه