نمودار کلاس

سلسله مراتب نمودارهای یو ام‌ال ۲ به صورت یک نمودار کلاس نمایش داده شده است.
در حیطه مباحث مهندسی نرم‌افزار، نمودار کلاس در زبان مدل سازی یکپارچه یک نوع از نمودارهای ساختاری ایستاست که ساختار یک سیستم را با نمایش کلاسهای سیستم، خصوصیات آنها و روابط بین آنها توصیف می‌کند.
مرور کلی
نمودار کلاس اصلی‌ترین جزء سازنده در مدلسازی شی گراست. این نمودار هم برای مدلسازی مفهومی کلی برنامه و هم برای مدلسازی طراحی جزئیات برای ترجمه به کد برنامه‌نویسی به کار می‌رود. یک کلاس در این نمودار به صورت جعبه مستطیلی نمایش داده می‌شود که از سه بخش تشکیل شده است:
یک کلاس با سه قسمت تشیل دهنده.
قسمت بالایی نام کلاس را نمایش می‌دهد
قسمت میانی خصوصیات کلاس را نمایش می‌دهد
قسمت پایینی شامل متدها یا عملیاتی است که کلاس انجام می‌دهد یا بر روی آن انجام می‌شود.
عناصر یک نمودار کلاس
کلاس
یک کلاس نمایشگر یک موجودیت از یک سیستم معین است که پیاده‌سازی کپسوله شده (encapsulated) ای از یک کارکرد موجودیت داده‌شده را ارائه می‌دهد. این کارکردها از طریق متدهای یک کلاس عرضه می‌شوند. کلاس همچنین دارای ویژگیهایی است که خصایص یکتای کلاس را تعریف می‌کنند. در مراحل اولیه انعقاد طراحی سیستم، کلاسها را کلاس‌های تحلیلی یا کلیشه (stereotype) می‌نامند. کلاس‌های تحلیلی بر اساس رفتارشان به سه دسته تقسیم می‌شوند:
کلاس‌های مرزی: در یک سیستم چندلایه‌ای (multi-tier) ایده‌آل کاربر تنها با کلاس‌های مرزی تعامل دارد.
کلاس‌های کنترلی: وظیفه این کلاس‌ها انتقال کنترل از کلاس‌های مرزی به کلاس‌هایی است که منطق برنامه را پیاده می‌کنند.
کلاس‌های موجودیتی: این کلاس‌ها حاوی منطق اصلی برنامه هستند.
واسط
واسطها (Interface) گونه‌ای از کلاسهای تغییر یافته هستند که به جای پیاده‌سازی کارکرد تنها آن را تعریف می‌نمایند. واسط‌ها همه ویژگی‌های کلاسها را دارند و تنها تفاوتشان این است که در واسط متدها فقط تعریف می‌شوند و پیاده‌سازی در کلاسها انجام می‌شود.
بسته
بسته (Package) این امکان را فراهم می‌کند که کلاسها و واسط‌هایی را که به یکدیگر شبیه یا مرتبط اند را در گروه‌هایی جمع‌آوری نمود. گروه‌بندی عناصر طراحی در یک عنصر بسته باعث خوانایی بیشتر نمودارهای کلاس می‌شود.
دسترسی به اعضای کلاس‌ها
یو ام‌ال سازوکارهای ویژه‌ای برای نمایش اعضای کلاس (متدها و خصوصیت‌ها) و اطلاعاتی اضافی راجع به آنها ارائه می‌دهد.
قابلیت دید(Visibility)
برای مشخص کردن قابلیت دید هر یک از اعضای کلاس (یعنی متدهاوخصوصیات) از نمادهایی که در جدول زیر آمده‌اند استفاده می‌شود که می‌بایست قبل از نام کلاس قرار گیرند:
عمومی(public)
قابل مشاهده برای تمام اجزایی که به فضای نام مالک آن دسترسی دارند.
حفاظت شده(protected)
قابل مشاهده برای تمام اعضایی که با فضای نام مالک آن رابطه تعمیم دارند.
خصوصی(private)
تنها در داخل فضای نام مالک آن قابل مشاهده است.
بسته(package)
در مالکیت فضای نامی است که خود یک package نیست، و توسط عناصری که در همان Package فضای نام مالک آن قرار دارند قابل مشاهده است. تنها عناصری که در مالکیت Packeageها نباشند می‌توانند این سطح از قابلیت دید را دارا باشند. هر عنصری که با قابلیت دید package مشخص شود برای تمام عناصری که در نزدیکترین package دربرگیرنده قرار دارند قابل مشاهده خواهد بود. خارج از این نزدیکترین package در بر گیرنده، عنصر دارای قابلیت دید package دیده نخواهد شد.
حوزه(Scope)
یو ام‌ال دو نوع حوزه مختلف برای اعضا تعیین می‌کند: نمونه(instance) و دسته کننده (Classifier). در مورد اعضای نمونهای، حوزه، یک نمونه خاص است. برای خصوصیات این بدان معناست که مقدار خصوصیتها در نمونه‌های مختلف تغییر می‌کند. برای متدها بدان معنی است که فراخوانی آن روی وضعیت نمونه تاثیر می‌گذارد یا به عبارت دیگر تنها روی خصوصیات نمونه‌ای تاثیر دارد.
در اعضای دسته کننده، حوزه کلاس است. برای خصوصیات این بدان معناست که مقدار خصوصیت در تمام نمونه‌ها یکسان است. برای متدها این بدان معناست که فراخوانی این متدها بر روی وضعیت نمونه‌ها تاثیری ندارد. در بسیاری از زبانهای برنامه‌نویسی دسته کننده‌ها را با کلمه static نشان می‌دهند. در صورت نیاز به تعریف عضوی از نوع دسته کننده باید زیر آن خط کشید، در غیر این صورت به عنوان پیش فرض حوزه آن نمونه‌ای در نظرگرفته می‌شود.