Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л11-12(Діаграма кооперації).doc
Скачиваний:
5
Добавлен:
15.11.2019
Размер:
434.18 Кб
Скачать

Діаграма кооперації рівня специфікації

Кооперація на рівні специфікації зображається на діаграмі пунктирним еліпсом, усередині якого записується ім'я цієї кооперації (мал. 9.1). Таке представлення кооперації відноситься до окремого варіанту використання і деталізує особливості його подальшої реалізації. Символ еліпса кооперації з'єднується пунктирною лінією з кожним учасником кооперації, якими можуть бути об'єкти або класи. Кожна з цих пунктирних ліній позначається роллю (role) учасника. Ролі відповідають іменам елементів в контексті всієї кооперації. Ці імена трактуються як параметри, які обмежують специфікацію елементів при будь-якій їх появі в окремих представленнях моделі.

Мал. 9.1. Загальне представлення кооперації на діаграмах рівня специфікації

Простий клас на діаграмі кооперації позначається прямокутником класу, усередині якого записується рядок тексту, який називається роллю класифікатора (classifier role). Роль класифікатора показує особливість використання об'єктів даного класу. Зазвичай в прямокутнику показується лише секція імені класу, хоча не унеможливлюється вказівка секцій атрибутів і операцій.

Рядок тексту в прямокутнику повинен мати наступний формат:

'/' <Ім'я ролі класифікатора> ':' <Ім'я класифікатора>

[':' <Ім'я класифікатора >]*

Ім'я класифікатора, якщо це необхідно, може включати повний шлях всіх вкладених пакетів. При цьому один пакет від іншого відділяється подвійною двокрапкою "::". Якщо не виникає плутанини, можна обмежитися вказівкою лише найближчого з пакетів, якому належить дана кооперація. Символ "*" застосовується для вказівки можливості ітеративного повторення імені класифікатора.

Якщо кооперація допускає узагальнене представлення, то на діаграмах можуть бути вказані відношення узагальнення відповідних елементів. Цей спосіб може бути використаний для визначення кооперацій, які є, окремим випадком або спеціалізацією іншої кооперації. Така ситуація зображається звичайною стрілкою узагальнення{, направленій від символу дочірній кооперації до символу кооперації-предка (мал. 9.2)}. При цьому ролі дочірніх кооперацій можуть бути спеціалізаціями ролей кооперацій-предків.

Мал. 9.2. Зображення відношення узагальнення між окремими коопераціями рівня специфікації

В окремих випадках виникає необхідність явно вказати той факт, що кооперація є реалізацією деякої операції або класифікатора. Це можна представити одним з двох способів.

1) можна з'єднати символ кооперації пунктирною лінією із стрілкою узагальнення з символом класу, реалізацію операції якого специфікує дана кооперація (мал. 9.3, а). Якщо розглянути клас "Замовлення на покупку товару", в якого є операція "оформити_замовлення(), то її реалізація може бути специфікована кооперацією.

Мал. 9.3. Способи представлення кооперації, яка реалізує операцію класу

2) можна просто зобразити символ кооперації, усередині якого вказати всю необхідну інформацію, записану за таким правилом: <ім’я кооперації> : <ім'я класу> :: <ім'я операції> (мал. 9.3, б).

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

Об'єкти

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

Об'єкт (object) є окремим екземпляром класу, який створюється на етапі виконання програми. Він може мати своє власне ім'я і конкретні значення атрибутів. Для об'єктів формат рядка класифікатора доповнюється ім'ям об'єкту і набуває наступного вигляду (весь запис підкреслюється):

<Ім'я об’єкта>'/' <Ім'я ролі класифікатора> ':' <Ім'я класифікатора>

[':' <Ім'я класифікатора >]*

Тут <Ім'я ролі класифікатора>: може не вказуватися. Ім'я ролі може бути опущене в тому випадку, якщо існує лише одна роль в кооперації, яку можуть грати об'єкти, створені на базі цього класу.

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

Примітка. У прямокутнику об'єкту ім'я об'єкту, ім'я ролі з символом Т або ім'я класу можуть бути відсутніми. Проте двокрапка завжди повинна стояти перед ім'ям класу, а коса риска - перед ім'ям ролі. Ім'я об'єкту має бути записане з великої літери.

Можливі варіанти запису рядка тексту в прямокутнику об'єкту.

: С – анонімний об'єкт, створений на основі класу С.

/ R – анонімний об'єкт, що грає роль R.

/ R : С – анонімний об'єкт, створений на основі класу C і що грає роль R.

О / R – об'єкт з ім'ям O, що грає роль R.

О : C – об'єкт з ім'ям O, створений на основі класу С.

О / R : C – об'єкт з ім'ям O, створений на основі класу C, що грає роль R.

O або – об'єкт з ім'ям О.

О : – "об'єкт-сирота" з ім'ям О.

• / R – роль з ім'ям R

• : C – анонімна роль на базі класу С.

• / R : C – роль з ім'ям R на основі класу С.

Мал. 9.4. Приклади різних варіантів запису імен об'єктів, ролей і класів на діаграмах кооперації

У першому випадку (мал. 9.4, а) позначений об'єкт з ім'ям "клієнт", що грає роль "ініціатор запиту". Позначення анонімного об'єкту, який грає роль ініціатора запиту є на мал. 9.4, б. У обох випадках не вказаний клас, на основі якого будуть створені ці об'єкти. Позначення класу присутнє на мал. 9.4, в, причому об'єкт також анонімний.

На діаграмах кооперації рівня специфікації можуть бути присутніми іменовані класи з вказівкою ролі класу в кооперації (мал. 9.4, г) або анонімні класи, коли вказується лише його роль (мал. 9.4, д). Останній випадок характерний для ситуації, коли в моделі можуть бути присутніми декілька класів з ім'ям "Клієнт", тому потрібно явно вказати ім'я відповідного пакету База даних (мал. 9.4, е).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]