ож зміною стану об'єкта.
На рис. 5 наведено графічне зображення класу «Замовлення» в нотації UML.
Малюнок 5 - Зображення класу в UML.
Видимість властивості вказує на можливість його використання іншими класами. Один клас може «бачити» інший, якщо той знаходиться в області дії першого і між ними існує явне або неявне ставлення. В UML визначено три рівня видимості: (загальний) - будь-який зовнішній клас, який «бачить» даний, може користуватися його загальними властивостями. Позначаються знаком «+» перед ім'ям атрибута або операції; (захищений) - тільки будь нащадок даного класу може користуватися його захищеними властивостями. Позначаються знаком «#»; (закритий) - тільки даний клас може користуватися цими властивостями. Позначаються символом «-».
Ще однією важливою характеристикою атрибутів і операцій класів є область дії. Область дії властивості вказує, чи буде воно проявляти себе по-різному в кожному примірнику класу, або одне і те ж значення властивості буде спільно використовуватися всіма екземплярами: (екземпляр) - у кожного екземпляра класу є власне значення даної властивості; (класифікатор) - всі екземпляри спільно використовують загальне значення даної властивості (виділяється на діаграмах підкресленням).
Можлива кількість екземплярів класу називається його кратністю. У UML можна визначати такі різновиди класів:
що не містять жодного примірника - тоді клас стає службовим (Abstract);
містять рівно один примірник (Singleton);
містять задане число примірників;
містять довільне число примірників.
Класи в UML зображуються на діаграмах класів, які дозволяють описати систему в статичному стані - визначити типи об'єктів системи і різного роду статичні зв'язки між ними. Класи відображають типи об'єктів системи.
Між класами можливі різні відносини, представлені на рис. 6:
залежності, які описують існуючі між класами відносини використання;
узагальнення, що зв'язують узагальнені класи зі спеціалізованими;
асоціації, що відображають структурні відносини між об'єктами класів.
Малюнок 6 - Відображення зв'язків між класами.
Залежністю називається відношення використання, згідно з яким зміна в специфікації одного елемента (наприклад, класу «товар») може вплинути на використовує його елемент (клас «рядок замовлення»). Часто залежності показують, що один клас використовує інший як аргумент.
Узагальнення - це відношення між загальною сутністю (батьком - клас «клієнт») і її конкретним втіленням (нащадком - класи «корпоративний клієнт» або «приватний клієнт»). Об'єкти класу-нащадка можуть використовуватися всюди, де зустрічаються об'єкти класу-батька, але не навпаки. При цьому він успадковує властивості батька (його атрибути і операції). Операція нащадка з тією ж сигнатурою, що і у батька, заміщає операцію з батьків; це властивість називають поліморфізмом. Клас, у якого немає батьків, але є нащадки, називається кореневим. Клас, у якого немає нащадків, називається листовим.
Асоціація - це відношення, що показує, що об'єкти одного типу якимсь чином пов'язані з об'єктами іншого типу («клієнт» може зробити «замовлення»). Якщо між двома класами визначена асоціація, то можна переміщатися від об'єктів одного класу до об'єктів іншого. При необхідності напрямок навігації може задаватися стрілкою. Допускається завдання асоціацій на одному класі. У цьому випадку обидва кінці асоціації відносяться до одного і того ж класу. Це означає, що з об'єктом деякого класу можна пов'язати інші об'єкти з того ж класу. Асоціації може бути присвоєно ім'я, яке описує семантику відносин. Кожна асоціація має дві ролі, які можуть бути відображені на діаграмі. Роль асоціації має властивість множинності, яке показує, скільки відповідних об'єктів може брати участь у цьому зв'язку.
Малюнок 7 ілюструє модель формування замовлення.
Малюнок 7 - Властивості асоціації.
Кожне замовлення може бути створений єдиним клієнтом (множинність ролі 1..1). Кожен клієнт може створити один і більше замовлень (множинність ролі 1..n). Напрямок навігації показує, що кожне замовлення повинен бути «прив'язаний» до певного клієнта.
Такого роду асоціація є простою і відображає відношення між рівноправними сутностями, коли обидва класу знаходяться на одному концептуальному рівні і ні один не є більш важливим, ніж інший. Якщо доводиться моделювати відношення типу «частина-ціле», то використовується спеціальний тип асоціації - агрегування. У такій асоціації один з класів має більш високий ранг (ціле - клас «замовлення») і складається з декількох менших за рангом класів (частин - клас «рядок замовлення»). У UML використовується і сильніша різновид агрегації - композиція, в якій об'єкт-частина може належати тільки єдиному цілому. У композиції життєвий цикл частин і цілого збігаються, будь-яке видалення ціл...