Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Моделирование и анализ ПО - 1.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

1.2.3.3 Кратність

Кратність (multiplicity) - це кількість примірників одного класу, які можуть бути пов'язані з одним примірником іншого класу через одну асоціацію. Кратність обмежує кількість пов'язаних між собою об'єктів. У літературі найчастіше розглядаються два значення кратності: «1» і «багато», але в загальному випадку кратність може бути потенційно нескінченною підмножиною невід'ємних цілих чисел. На діаграмах UML кратність вказується явно біля кінця лінії, якою позначається асоціація. Значення кратності вказується у вигляді діапазону, наприклад «1» (рівно один), «1 ..*» (один і більше) або «3 .. 5» (від трьох до п'яти включно). Спеціальний символ «*» позначає слово «багато» (many) - нуль і більше. На рис. 1.2.18 наведено приклад, коли один примірник класу Class1 може бути пов'язаний з одним або більше примірниками класу Class2.

Рисунок 1.2.18 – Приклад використання кратності примірників різних класів

1.2.3.4 Ім’я полюсів асоціації

Кратність неявно має на увазі наявність полюсів асоціації (association end). Наприклад, асоціація один-до-багатьох має два полюси, в одного з яких зазначена кратність «один», а у іншого - «багато». Концепція полюса асоціації - одна з найважливіших в UML. Полюс асоціації може мати не тільки кратність, але й своє власне ім'я. Імена полюсів асоціацій часто присутні в описах завдань у вигляді іменників. Ім'я полюса вказується близько до кінця асоціації. Використання імен полюсів асоціацій не є обов'язковим, але найчастіше виявляється простіше вказувати імена полюсів замість імен асоціацій або, принаймні, разом з ними (рис. 1.2.19).

Рисунок 1.2.19 – Приклад використання полюсів асоціації

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

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

Імена полюсів дозволяють уніфікувати кілька посилань на один і той же клас. При побудові діаграм класів слід коректно використовувати імена полюсів асоціацій і не вводити окремий клас для кожного посилання.

Оскільки імена полюсів асоціації дозволяють відрізняти об'єкти один від одного, всі імена на дальньому полюсі асоціації, прикріпленої до певного класу, повинні бути унікальними. Хоча ім'я ставиться близько цільового об'єкта асоціації, фактично воно є псевдоатрибутом вихідного класу, а тому повинно бути унікальним всередині нього. З тієї ж причини ім'я полюса асоціації не має збігатися з ім'ям будь-якого атрибуту вихідного класу.