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. Дуже легка і проста програма, як раз те, що треба початківцю.