М. Фаулер, К. Скотт - UML. Основы - 2002 (1158629), страница 34
Текст из файла (страница 34)
Вместо этого в языке 1)МЬ версии 1.1 определено ограничение (полный), которое указывает лишь на то, что соответствующее разбиение отражает все подтипы. А зто совсем не то же самое. Мною было обнаружено множество несоответствий в интерпретации этого ограничения, поэтому вам следует обратить на это внимание. Если вы хотите, чтобы все экземпляры супертипа были экземпляром одного из подтипов, то во избежание недоразумений логично использовать другое ограничение. Лично я использую в этом случае (обязательно) ((шапба1огу)).
Композиция Использование композиции в языке АМ(. версии 1.0 означает, что эта связь неизменна (или постоянна) по крайней мере для однозначных компонентов. Это ограничение больше не является частью определения композиции. Неизменность и постоянство Язык 1)М1. определяет ограничение (постоянный) ((1гозеп)) для указания неизменяемости ролей ассоциации. Как определено в настоящее время, это ограничение не может быть применено к атрибутам или Приложение В классам. В своей текущей работе вместо неизменяемости я использую термин постоянный, тем самым я могу применять это ограничение к ролям ассоциаций, классам и атрибутам. Обратные сообщения на диаграмме последовательности В языке 11МВ версии 1.0 обратное сообщение или возврат на диаграмме последовательности вместо сплошной треугольной стрелки стало обозначаться обычной стрелкой (см.
предыдущее издание). Это привело к некоторым проблемам, поскольку данное различие трудно уловимо и легко приводит к недоразумениям. Язык УМ). версии 1.1 для изображения возвратов использует пунктирную линию со стрелкой, что мне больше нравится„поскольку делает возвраты намного более очевидными. (Именно поэтому в своей книге «Анализ образцов» (18)я использовал пунктирные возвраты, что представляется мне весьма важным.) Для последующего применения возвратов можно назначить им имена вида епоиайБгос)«:=с)»ест().
Использование термина еРоль» В языке 1)М1. версии 1.0 термин роль в основном указывал направление некоторой ассоциации (см. предыдущее издание). Язык ИМ1. версии 1.1 рассматривает данное определение как роль ассоциации. Помимо нее существует роль кооперации, то есть роль, которую исполняет некоторый экземпляр класса в кооперации. Многие разработчики по-прежнему используют термин роль в смысле направления ассоциации, хотя конец ассоциации является официальным термином языка УМ1.. Отличия версий 1.2 (и 1.1) и 1.3 языка 0МЕ Варианты использования Изменения относительно вариантов использования заключаются в добавлении новых отношений между вариантами использования.
В языке 1)МЬ версии 1.1 имелись только два отношения между вариантами использования: «использует» и «расширяет», каждое их которых является стереотипом обобщения. В версии 1.3 определены три отношения: ° Конструкция «включает» является стереотипом зависимости. Она означает, что выполнение одного варианта использования включает в себя другой вариант использования. Обычно это отношение встречается в ситуации, когда несколько вариантов использования имеют общие этапы или части. Включаемый вариант использова- Отличия версий языка 0»л~ 175 ния может предоставлять другим некоторое общее поведение.
В качестве примера можно рассмотреть банкомат АТМ, в контексте которого оба варианта использования «Выдать деньги по карточке» и «Осуществить оплату по карточке» используют вариант «Проверить подлинность клиента». Это отношение в общем случае заменяет применение стереотипа «использует». ° Обобщение варианта использования означает, что один вариант использования является вариацией другого. Таким образом, можно иметь один вариант использования для «Выдать деньги по карточке» (базовый вариант использования) и другой вариант использования для ситуации, когда выдача денег невозможна по причине отсутствия средств на счету клиента.
Отказ от выплаты денег можно представить в виде отдельного варианта использования, который уточняет базовый вариант использования. (Кроме того, можно определить еще и дополнительный сценарий для варианта использования «Выдать деньги по карточке».) В этом случае специальный вариант использования, подобно рассмотренному выше, может изменить какой-либо аспект базового варианта использования. ° Конструкция «расширяет» является стереотипом зависимости.
Она обеспечивает более управляемую форму расширения по сравнению с отношением обобщения. В этом случае в базовом варианте использования задается несколько точек расширения. Включающий вариант использования может вносить изменения в свое поведение только в этих точках расширения. К примеру, при рассмотрении покупки товара через Интернет можно определить один вариант использования для покупки товара с точками расширения для ввода информации о доставке товара и ввода информации об оплате товара.
После чего этот вариант использования может быть расширен для постоянных клиентов, для которых подобная информация может быть получена другим способом. Существует некоторая путаница насчет старой и новой интерпретаций указанных отношений. Большинство разработчиков применяют стереотип «использует» в ситуациях, когда версия 1.3 рекомендует указывать стереотип «включает», поскольку для многих из них стереотип «включает» может быть заменен стереотипом «использует». И большинство разработчиков применяют стереотип «расширяет» из версии 1.1 в более широком смысле, предполагая не только отношение «расширяет» из версии 1.3, но также и важнейшую составляющую отношения обобщения в версии 1.3. Поэтому можно считать, что отношение со стереотипом «расширяет» расщепляется в версии 1.3 на два отношения: со стереотипом «расширяет» и обобщение.
Хотя это объяснение охватывает большую часть известных мне приложений языка 1)М)., в настоящее время мне неизвестен строгий и правильный способ использования в них старых отношений. Однако боль- 176 Приложение В шинство разработчиков вовсе не пользуются этим строгим определением отношений, поэтому мне не хотелось бы развивать эту тему дальше. Диаграммы деятельности С появлением версии 1.2 языка ()М1.
осталось всего лишь несколько открытых вопросов относительно семантики диаграмм деятельности. В версии 1.3 на большинство из этих вопросов были даны ответы, которые были закреплены в семантике языка ()М1,. В отношении условного поведения теперь стало возможным использовать деятельность в форме ромба как для соединения, так и для ветвления. Хотя для описания условного поведения ни ветвления, ни разделения не являются необходимыми, все более общепринятым становится способ изображения, заключающий условное поведение в скобки. Символ синхронизации в форме черты теперь относится как к разделению (когда управление расщепляется), так и к слиянию (когда синхронизируемое управление объедиыяется снова). Однако теперь никаких дополыительных условий ыа слияние не накладывается.
Необходимо лишь придерживаться правил, гарантирующих соответствие разделений и слияний. По существу это означает, что каждое разделение должно иметь соответствующее слияние, которое соединяет все параллельные нити процесса, берущие начало в исходном разделении. Хотя разделения и слияния могут быть вложенными, их можно удалить с диаграммы, если нити соединяют ветвления (или слияния) напрямую.
Слияния могут произойти только тогда, когда все входящие в него нити завершены. Однако можно определить некоторое условие для выходящей из разделения нити. Коли это условие ые выполняется, то соответствующая нить считается завершенной и может участвовать в слиянии остальных нитей. Свойство множественной инициализации больше не поддерживается.
Вместо него можно определить динамическую параллельыость в некоторой деятельности (указывается с помощью символа «*» внутри прямоугольника деятельности). Такая деятельность может выполняться параллельно несколько раз; все ее вызовы должны быть завершены, прежде чем сможет быть выполнен какой-либо выходящий из нее переход.
Это в некоторой степени эквивалентно множественной инициалызации и подходящему условию синхронизации, хотя и является менее гибким способом. Хотя эти правила в какой-то степени уменьшают гибкость диаграмм деятельности, однако они гарантируют, что диаграммы деятельности являются поистине частными случаями автоматов. Отношеыие между диаграммами деятельности и автоматами стало предметом дискуссии инициативной группы ВТР. Последующие версии языка 1)М1 (после 1.4) вполне могут определить диаграммы деятельыости как диаграммы совершенно другой формы. Библиография 1. Кепг ВесЫ БтаШагЬ Вевг Ргасггсе Раггегпз. Ргепг1се На11, 1996. 2.
Кепг Весуп Ехггете Рюугаттгпя Еггр1агпейг ЕтЬгасе СЬапуе. Айй1 воп-Жев1еу, 2000. 3. Кепг ВесЬ и Ъ'агй Сиппгп3Ьапп «А ЬаЬогагогу гог ТеасМп3 ОЬ1есг-Ог1 еп»ей ТИпИп3» Ргосеейгпуз о/ ООРБ1 А 89. 81ОР1 АХ Ьго$1сев, «'о1. 24, Хо. 10, рр. 1-6. См. Ьггрг//с2.сот/йос/оорзга89/рарег.ЬгтЕ 4. Огайу ВоосЬ: ОЬ/есг-Оггепгей АпагувЬз апй Везгуп шггЬ АррВсаггопз, Бе сопй Ейгггол. Айй1воп-Жев1еу, 1994.
Буч Г. «Объектно-ориентированный анализ и проектирование с примерами приложений на С++». — Пер. с англ. — М.: «Бином»; СПб: «Невский диалект», 1999. — 560 с. 5. Огайу ВоосЬ: ОЬ/есг Богиггопзг Мапаугпу гЬе ОЬ/есг-Оггепгей Ргогесг Айй1воп-Юев1еу, 1996. 6. Огайу ВоосЬ, дагаев БигпЬаиЕЬ и очаг ЮасоЬвоп 11Ьгее ат1дов]: ТЬе Упг /гей МойейпуЕапуиауе Пзег ОиЫе. Айй1воп-Жев1еу, 1999. Буч Г., Рамбо Дж., Джекобсон А.
«Язык ПМЬ. Руководство пользователя». — Пер. с англ. — М.: ДМК, 2000. — 432 с. 7. Ргапу ВивсЬтапп, Ве31пе Меип1ег, Напв ВоЬпегг, Регег Зопипег1ай и М1сЬае1 Бга1: Раггегл-Опепгей Бо/гшаге АгсЬггесгигег А Бузгет о/ Раб гегпз. ЮоЬп %11еу8» Бопв, 1996. 8. Решает Соай апй Л11 Жсо1а: ОЬгесг.Оггепгей Ргоцгаттгпц. Уоигйоп, 1993. 9. Регег Соай апй Ей»»агй Уоигйоп: ОЬ/есг-Оггелгей Апа1узрп Уоигйоп, 1991. 10. Регег Соай апй Ей«»агй г'оигйоп ОЬ/есг-Оггепгей Эезгуп. Уоигйоп, 1991. 11. Регег Соай, РауЫ ХогФЬ и МагЬ Мауйе1й: ОЬ/есг Мойегз: Бггагеугез Раггегпз апйАррггсагшпз. Ргеп11се На11, 1996.
Коуд П., Норт Д., Мейфилд М. «Объектные модели. Стратегии, шаблоны и приложения«. — Пер. с англ. — М.: «Лори», 1999. — 434 с. 178 Библиография 12. АНвФа1г СосЬЬпгп: Биплсйпу ОЬ|есбОг1епзей Рго1есзз. Айй1воп-Ч»'ея1еу, 1998. 13. 8$ече СооЬ и ЮоЬп Вап1е1в: 1)ез1ул1пу ОЬ|есг Бузгетк ОЬ~еспОг1епгей Мойе11лу ш11Ь Буп1юру. Ргеп$1се На11, 1994. 14. дашев О. Сор11еп: «А Оепега11че Пече1оршеп$ Ргосеяв Ра11егп Ьапбпабе» 1п Сор11еп апй ЯсЬш1сИ, 1995, рр. 183 — 237.
15. затея О. Сор11еп и Поп31ая С. ЯсЬш1й1, ейял Рамегп Еапуиауез ог Ргоугат 11ез1дп 1Р1лРП1]. Айй1яоп-ЧЧев1еу, 1995. 16. Чуагй Сппп1пбЬанн «ЕР1ЯОПЕЯ: А РаИегп Ьапдпабе о1 СошреШ1че Пече1оршепФ. » 1п Ч11яяЫея, Сор11еп, апй Кета, 1996, рр. 371 — 388. 17. Вгпсе Ро»че1 Поп31авя: Веа1-Т1те УМЕ. Айй1воп-'й~ев1еу, 1998. 18. Магй1п Рош1ег: Апа1уз1з Ра11еглз«Ееизад1е ОЬ!есе Майе!з. Айй1яоп-Ъ~ев- 1еу, 1997. 19. Маг$1п Ро»»1ег: Ве1ас~ог1пц: 1тргоо1пу Ие.Оез1дл о1'ЕхшМлд Ргоугатв. Айй1воп-УКея1еу, 1999 . 20. Ег1сЬ Оашша, В1сЬагй Не1ш, Ва1рЬ ЮоЬпяоп и ЮоЬп Ч11ввЫея 10апб о1 Роиг1: Регул Раггегпзз Е1етепгз о1 ЕеизаЫе 01уесбОпел1ей Боггшаге.