Uml - це просто анатолій Ларін

Сьогодні я спробую розповісти про трьох буквах, які чули практично всі програмісти ... ні, це не ті букви ... :) Це UML.

В двох словах

UML (Unified Modeling Language) - уніфікована мова моделювання - це мова графічного опису для об'єктного моделювання в області розробки програмного забезпечення. UML є мовою широкого профілю, це відкритий стандарт, який використовує графічні позначення для створення абстрактної моделі системи, званої UML моделлю. UML був створений для визначення, візуалізації, проектування та документування в основному програмних систем.

Використання UML не обмежується моделюванням програмного забезпечення. Його також використовують для моделювання бізнес-процесів, системного проектування та відображення організаційних структур.

різновиди

Існує 13 офіційних діаграм UML 2.0, кожна з яких представляє собою різне уявлення різних аспектів системи:

  • Діаграма активності;
  • Діаграма класів;
  • Діаграма зв'язків;
  • Діаграма компонентів;
  • Діаграма складових структур;
  • Діаграма розгортання;
  • Діаграма огляду взаємодії;
  • Діаграма об'єктів;
  • Діаграма пакетів;
  • Циклограма;
  • Діаграма машин стану;
  • Діаграма синхронізації;
  • Діаграма прецедентів.

Але ми собі відразу виносити мозок не збираємося (ми будемо робити це поступово), так що сьогодні поговоримо тільки про один вид діаграм - діаграмах класів. І проілюструємо все прикладами на PHP.

діаграма класів

Діаграма класів є типом діаграми статичної структури. Вона описує структуру системи, показуючи її класи, їх атрибути і оператори, і навіть взаємозв'язку цих класів. І так, почнемо з прикладів:

Генералізація (узагальнення)

Генералізація показує, що один з двох пов'язаних класів (підтип), є більш приватною формою іншого (супертіп), який називається узагальненням першого.

Графічно генералізація представляється лінією з порожнім трикутником у супертіпа.

На PHP це буде виглядати, наступним чином:

Все просто. Йдемо далі. І введемо пару визначень:

Зв'язок - проста взаємозв'язок між об'єктами. Вона представляється лінією що з'єднує два або більше об'єктних блоку. Вона зустрічається на діаграмах класів або об'єктів. Мобільний зв'язок - окремий випадок асоціації.

Асоціація - це сімейство зв'язків двох і більше класів. Всього існує п'ять типів асоціації. Але найбільш поширені два: двунаправленная і односпрямованим
асоціації.

Розглянемо окремі варіанти:

Агрегація - «has a» (бути частиною) випадок асоціації. Агрегація застосовується коли один клас повинен бути контейнером інших класів. Причому час існування містяться класів ніяк не залежить від часу існування класу контейнера.

Тобто в нашому прикладі в якості контейнера виступає об'єкт класу Model. І якщо в ході виконання програми він буде знищений, це ніяк не вплине на об'єкт класу DataBase.

Графічно агрегація представляється порожнім ромбиком на блоці класу і лінією, що йде від цього ромбика до вмісту класу.

композиція

Ще один «has a» випадок асоціації, але суворіший. На відміну від агрегації, композиція має жорстку залежність часу існування примірників класу контейнера і примірників містяться класів. Якщо контейнер буде знищений, то весь його вміст буде знищено також.

Графічно представляється як і агрегація, але з зафарбовані ромбиком.

Різниця між агрегацією і композицією

Різниця між цими двома видами асоціації полягає в тому, що композиція може бути частиною одного і тільки одного цілого, в той час як агрегація може бути частиною декількох об'єктів.

Спрямована асоціація (Message / Directed Association)

Повідомлення використовується коли один клас "спілкується" з іншим за допомогою інстанцірованія.

Інстанцірованія (англ. Instantiation) - створення екземпляра класу. На відміну від слова «створення» застосовується не до об'єкта, а до класу. Тобто говорять створити екземпляр класу або інстанціювати клас. Породжують патерни використовують поліморфний інстанцірованія.

Примірник класу (англ. Instance) - це опис конкретного об'єкта в пам'яті. Клас описує властивості і методи, які буде доступні у об'єкта, побудованого за описом, закладеному в клас. Примірники використовують для представлення конкретних сутностей реального світу.

Графічно представляється у вигляді стрілочки спрямованої до "викликається" класу.

Так само спрямована асоціація може бути двосторонньою, наприклад:

З. И.. Всі діаграми були виконані в програмі StarUML. Дуже легка і проста програма, як раз те, що треба початківцю.