Кооперации

В отличие от других глав этой книги, в данной не обсуждаются фор­мальные диаграммы UML 2. В стандарте UML кооперации рассматри­ваются как часть составных структур, но диаграмма коопераций в действительности совершенно отличается от составных структур и применялась в UML 1 без всякой связи с составными структурами. Поэтому я счел, что лучше обсудить кооперации в отдельной главе.

Рассмотрим систему обозначений аукциона. В любом аукционе (Auc­tion) могут участвовать продавец (seller), покупатели (buyer), множест­во вещей (lot) и какие-либо предложения о покупке (offer). Мы можем описать эти элементы в терминах диаграммы классов (рис. 15.1) и, воз­можно, посредством нескольких диаграмм взаимодействий (рис. 15.2).


На рис. 15.1 представлена не совсем обычная диаграмма классов. Во-первых, она обведена пунктирным эллипсом, который представляет аукционную кооперацию. Во-вторых, так называемые классы в коопе­рации - это не классы, а роли (roles), которые реализовываются в про­цессе выполнения кооперации, поэтому их имена начинаются с маленькой буквы. Сопоставление фактических интерфейсов или классов ролям кооперации не является чем-то необычным, но тем не менее вы не обязаны это делать.

Как видите, на диаграмме взаимодействий участники именуются не­много необычно. В кооперации схема именования выглядит следующим образом:

имя-участника / имя-роли: имя-класса.

Как всегда, все эти эле­менты необязательны.

Применение кооперации можно обозначить, отмечая ее наличие на диаграмме классов, как показано на рис. 15,3, где представлены неко­торые классы приложения. Связи, идущие от кооперации к этим клас­сам, показывают, как классы играют различные роли, определенные в кооперации.

В языке UML предполагается, что можно показать применение пат­тернов, но вряд ли автор каких-либо паттернов будет это делать. Эрих Гамма (Erich Gamma) разработал прекрасную альтернативную нота­цию (рис. 15.4). Элементы диаграммы обозначаются либо именем пат­терна, либо комбинацией паттерн: роль.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: