
UML چیست؟
مخفف عبارت Unified Modeling Language می باشد که به معنای زبان مدل سازی یکپارچه است. این زبان درواقع یک زبان مدل سازی استاندارد برای مهندسان نرم افزار است که در اصل در پاسخ به یک نیاز بین توسعه دهندگان نرم افزار بوجود آمد و آن، نیاز به سیستمی واحد برای مدل کردن سیستم های نرم افزاری است.
استارت اولیه طراحی UML در سال 1997 زده شد و نسخه ی نهایی آن در سال 2007 ارائه شد. با نمودارهای گرافیکی ای که UML در اختیار توسعه دهندگان نرم افزار قرار می دهد، می توان به هر زبانی کد نوشت.
هدف از استفاده از UML، تحلیل و طراحی سیستم های شئ گراست. یکی دیگر از مزایای استفاده از UML این است که قبل از شروع به نوشتن کد های پروژه، می توان با ابعاد مختلف آن پروژه آشنا شد.
UML در یک نگاه
یک نمونه از UML در تصویر زیر نشان داده شده است که متشکل از کلاس ها، اینترفیس ها و روابط آنهاست.

در ادامه به بررسی تک تک اجزاء یک UML می پردازیم.
آشنایی با اجزاء UML
Class
در UML، کلاس را به صورت زیر نشان می دهند و علامت های + و – معرف نوع سطوح دسترسی هستند. برای مطالعه ی بیشتر در مورد سطوح دسترسی اینجا را کلیک کنید.

Interface
در UML، اینترفیس به شکل زیر نشان داده می شود.

Implementation
چند مدل پیاده سازی در UML وجود دارد که معادل هم هستند، در شکل زیر هر دو مدل پیاده سازی آورده شده است که نوع سمت راستی معروف تر است (خط چین با مثلث توخالی).

Inheritance یا Generalization
این رابطه به نام رابطه ی والد-فرزند نیز خوانده می شود و بین یک چیز کلی و یک چیز خاص تر برقرار می شود. از این نوع رابطه برای نمایش مفهوم وراثت استفاده می شود. در UML وراثت را با پاره خط و یک مثلث توخالی نشان می دهند. در بعضی جاها با نیم خط و فلش هم دیده می شود.

Association
به آن وابستگی یا رابطه ی انجمنی می گویند. وابستگی بین کلاس ها را نشان می دهد که خود شامل دو نوع است:
• Aggregation
• Composition
برای نمایش Association در UML از یک پاره خط استفاده می کنیم، به شکل و کد زیر دقت کنید:

1 2 3 4 5 6 7 8 9 10 |
class Teacher class Teacher { Student students = new Student(); } class Student { Teacher teachers = new Teacher(); } |
همانطور که در کد مشخص است، هر دو کلاس، ارجاعی به یکدیگر دارند. این کلاس ها وابسته هستند و می توانند یکدیگر را پیمایش کنند.
Aggregation
تجمیع، زیر مجموعه ای از Association است، طبق تعریف Aggretgation ، کلاس A به کلاس B ارجاع دارد اما کلاس B ارجاعی به کلاس A ندارد. با حذف کلاس B، کلاس A ناقص می ماند اما با حذف کلاس A، کلاس B دست نخورده باقی می ماند.

مثالی از Aggregation در زیر آورده شده است.
1 2 3 4 5 6 7 8 9 |
class university { UniBoss uniBoss = new UniBoss(); } class UniBoss { string name; } |
Composition
ترکیب، زیر مجموعه ای از Association است. طبق تعریف Composition، کلاس A ارجاعی به کلاس B دارد و همچنین کلاس B نیز ارجاعی به کلاس A دارد. با حذف هر کلاس، کلاس دیگر ناقص می ماند.

Multiplicity
تعدد، نشان می دهد که در یک رابطه، چه تعداد شئ به هم مرتبط هستند. به شکل زیر دقت کنید.

تعدد چند نوع دارد:
- 1..1 یعنی یک شئ (پیش فرض UML)
- *..0 یعنی هیچ شئ یا حداقل یک شئ
- *..1 حداقل یک شئ
- m..m حداقل m شئ
- m..n حداقل m شئ و حداکثر n شئ
Dependency
در این رابطه، کلاسی به کلاس دیگر وابستگی دارد.

در مثالی که در زیر آورده شده است، کلاس Company به کلاس Car وابستگی دارد.
1 2 3 4 5 6 7 8 |
class Company { public void ShowCar() { Car pride = new Car(); Console.WriteLine(pride.GetCarName()); } } |
Comment
کامنت ها را در UML به شکل زیر هستند.

Variable
متغیر ها در UML به شکل زیر هستند.

علامت های Access Modifiers
سطوح دسترسی در UML به شکل زیر نشان داده می شود.

چند مثال
مثال اول

به UML بالا دقت کنید، کلاس Creator به اینترفیس Product وابستگی (Dependency) دارد. همچنین کلاس های Concrete ProductA و Concrete ProductB ، اینترفیس Product را پیاده سازی(Implement) کردند. کلاس های ConcreteCreatorA و ConcreteCreatorB از کلاس Creator ارث بری(Inherit) کرده اند.
مثال دوم

به نمودار UML بالا دقت کنید. کلاس Adapter، اینترفیس Client Interface را پیاده سازی کرده است. کلاس Adapter از کلاس Service ارث بری کرده است و صاحب متد ها و فیلد های آن است. کلاس Client ارجاعی از اینترفیس درون خود دارد. (Navigation)