русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Відношення асоціації


Дата додавання: 2014-10-07; переглядів: 2494.


Відношення асоціації відповідає наявності деякого відношення між класами. Дане відношення позначається суцільною лінією з додатковими спеціальними символами, які характеризують окремі властивості конкретної асоціації. У якості додаткових спеціальних символів можуть використовуватися ім'я асоціації, а також імена й кратність класів-ролей асоціації. Ім'я асоціації є необов'язковим елементом її позначення. Якщо воно задано, то записується із заголовної (великий) букви поруч із лінією відповідної асоціації.

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

Як простий приклад відносини бінарної асоціації розглянемо відношення між двома класами - класом "Компанія" і класом "Співробітник". Вони зв'язані між собою бінарною асоціацією Робота, ім'я якої зазначене на малюнку поруч із лінією асоціації. Для даного відношення визначений порядок проходження класів, першим з яких є клас "Співробітник", а другим - клас "Компанія". Окремим прикладом або екземпляром даного відношення може бути пари значень (Петров И. И., "Рогу&Копита"). Це означає, що співробітник Петров И. И. працює в компанії "Рогу&Копита".

Тернарная асоціація й асоціації більше високої арности в загальному випадку називаються N-Арной асоціацією (читається - "эн арная асоціація"). Така асоціація зв'язує деяким відношенням 3 і більше класів, при цьому один клас може брати участь в асоціації більш ніж один раз. Клас асоціації має певну роль у відповідному відношенні, що може бути явно зазначене на діаграмі. Кожний екземпляр N-Арной асоціації являє собою N-Арный кортеж значень об'єктів з відповідних класів. Бінарна асоціація є часткою случаємо N-Арной асоціації, коли значення N=2, і має своє власне позначення.

N-Арная асоціація графічно позначається ромбом, від якого ведуть лінії до символів класів даної асоціації. У цьому випадку ромб з'єднується із символами відповідних класів суцільними лініями. Звичайно лінії проводяться від вершин ромба або від середини його сторін. Ім'я N-Арной асоціації записується поруч із ромбом відповідної асоціації.

Порядок класів в N-Арной асоціації, на відміну від порядку безлічей у відношенні, на діаграмі не фіксується. Деякий клас може бути приєднаний до ромба пунктирною лінією. Це означає, що даний клас забезпечує підтримку властивостей відповідної N-Арной асоціації, а сама N-Арная асоціація має атрибути, операції й/або асоціації. Інакше кажучи, така асоціація, у свою чергу, є класом з відповідним позначенням у вигляді прямокутника і є самостійним елементом мови UML - асоціацією-класом (Association Class). N-Арная асоціація не може містити символ агрегації ні для якої зі своїх ролей.

Як приклад конкретної тернарной асоціації розглянемо відношення між трьома класами: "Футбольна команда", "Рік" і "Гра". Дана асоціація вказує на наявність відносини між цими трьома класами, що може представляти інформацію про ігри футбольних команд у національному чемпіонаті протягом декількох останнього років (мал. 5.6).

Як уже згадувалося, окремий клас асоціації має власну роль у відношенні. Ця роль може бути зображена графічно на діаграмі класів. Із цією метою в мові UML уводиться в розгляд спеціальний елемент - кінець асоціації (Association End), що графічно відповідає крапці з'єднання лінії асоціації з окремим класом. Кінець асоціації є частиною асоціації, але не класу. Кожна асоціація має два або більше кінці асоціації. Найбільш важливі властивості асоціації вказуються на діаграмі поруч із цими елементами асоціації й повинні перемішатися разом з ними.

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

Наступний елемент позначень - кратність окремих класів, що є кінцями асоціації. Кратність окремого класу позначається у вигляді інтервалу цілих чисел, аналогічно кратності атрибутів і операцій класів. Інтервал записується поруч із кінцем асоціації й для N-Арной асоціації означає потенційне число окремих екземплярів або значень кортежів цієї асоціації, які можуть мати місце, коли інші N-1 екземплярів або значень класів фіксовані.

Так, для розглянутого раніше приклада кратність "1" для класу "Компанія" означає, що кожний співробітник може працювати тільки в одній компанії. Кратність "1..*" для класу "Співробітник" означає, що в кожній компанії можуть працювати кілька співробітників, загальне число яких заздалегідь невідомо й нічим не обмежено. Помітимо, що замість кратності "1..*" записати тільки символ "*" не можна, оскільки останній означає кратність "0..*". Для даного приклада це означало б, що окремі компанії можуть зовсім не мати співробітників у своєму штаті. Але така кратність цілком прийнятна в інших ситуаціях, як це видно з розглянутого вище приклада.

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

Часткою случаємо відносини асоціації є так звана асоціація, що виключає ( Xor-association). Семантика даної асоціації вказує на той факт, що з декількох потенційно можливих варіантів даної асоціації в кожний момент часу може використовуватися тільки один її екземпляр. На діаграмі класів асоціація, що виключає, зображується пунктирною лінією, що з'єднує дві й більше асоціації, поруч із якої записується рядок-обмеження "{хог}".

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

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


<== попередня лекція | наступна лекція ==>
Відношення залежності | Відношення агрегації


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн