М. Фаулер, К. Скотт - UML Основы (1114905), страница 33
Текст из файла (страница 33)
п. Более значительные изменения коснулись версии 1.3, которые заметно уточнили терминологию в отношении вариантов использования и диаграмм деятельности. Позже в 1999 году были опубликованы две книги «трех друзей»: «Руководство пользователя» 16) и «Справочник пользователя» 137), которые отразили изменения в версии 1.3 до публикации официальных документов по этой версии языка УМ1„что привело к некоторым недоразумениям. В апреле 1999 года инициативная группа ВТР представила консорциуму ОМС версию 1.3 в качестве нового официального стандарта языка УМ1.. После чего зта группа взяла на себя дальнейшее развитие языка ПМВ и рассмотрение его последующих обновлений.
Эта информация известна мне на момент написания книги; последние сведения по этим вопросам можно найти на моей домашней страничке в Интернете. Изменения в первом издании книги В процессе эволюции языка УМ1, я пытался учесть его изменения, что привело к появлению нескольких вариантов книги «УМ1 в кратком изложении». При этом я пользовался хорошей возможностью исправить ошибки и сделать изложение более ясным. Хотя в основу настоящего второго издания положена версия 1.3, я не могу утверждать, что последующие варианты этой книги не будут содержать каких-либо неожиданных обновлений.
Так, в первом варианте приложения упоминалась версия 1. 4, но в конце концов инициатив- 1уг Приложение В ная группа ВТГ решила не изменять номер версии языка УМ1., поэтому она так и осталась версией 1.3. Далее в атом приложении внимание сосредоточено на двух основных отличиях в языке БМ1« имевших место при изменениях версий с 1.0 на 1.1 и с 1.2 на 1.3. Мне бы не хотелось обсуждать в деталях все произошедшие изменения, поэтому остановлюсь лишь на тех из них, которые каким-то образом затрагивают материал книги «17МЬ в кратком изложении» или относятся к важным свойствам языка ПМ1„рассмотренным в первом издании. Продолжая следовать стилю изложения первого издания, я рассмотрю основные элементы языка УМ1.
и особенности применения языка ПМ1. при выполнении реальных проектов. Как и ранее, выбор материала и соответствующие рекомендации основаны на моем собственном опыте. Если обнаружится противоречие между моим изложением и официальной документацией по языку УМЕ, следует придерживаться официальной документации. (Однако мне бы хотелось об атом знать, чтобы впоследствии внести соответствующие исправления.) Я также воспользуюсь представленной возможностью отметить те или иные важные ошибки или погрешности предыдущих вариантов книги. Спасибо читателям, которые сообщили о них. Отличия версий 1.0 и 1.1 языка 0М1.
Тип и класс реализации В первом издании «УМ1 в кратком изложении«я рассмотрел различные точки зрения на разработку и те возможные изменения, которые произойдут в результате совершенствования способов изображения и интерпретации моделей, в частности, диаграмм классов. Эти обстоятельства нашли отражение в языке УМ1н поскольку теперь утверждается, что все классы на диаграмме классов могут быть определены либо как типы„либо как классы реализации.
Класс реализации соответствует некоторому классу в контексте программы, которая вами разрабатывается. Тнп является более расплывчатым понятием„он представляет некоторую абстракцию, которая в меньшей степени касается реализации. Это может быть тип СОВВА, описание класса с точки зрения спецификации или некоторая концептуальная модель. При необходимости можно определить дополнительные стереотипы, чтобы в последующем различать зти понятия. Можно установить, что для отдельной диаграммы все классы обладают некоторым особым стереотипом. Это может произойти в том случае, когда диаграмма отражает отдельную точку зрения. При этом точка зрения реализации предполагает использование классов реали- Стяичия версий языка цМс зации, а концептуальная точка зрения и точка зрения спецификации предполагают использование типов.
Если некоторый класс реализации реализует один или несколько типов, то это может быть показано с помощью отношения реализации. Между типом и интерфейсом существует различие. Предполагается, что некоторый интерфейс должен непосредственно соответствовать интерфейсу в стиле СОЕВА или СОМ. В этом случае интерфейсы имеют только операции и не имеют атрибутов. Для класса реализации может быть использована только единственная статическая классификация, однако для типов можно использовать множественную и динамическую классификацию.
(Я думаю, что причиной этого является то обстоятельство, что основные объектноориентированные языки поддерживают единственную статическую классификацию. Если в один прекрасный день вы будете пользоваться языком, который поддерживает множественную или динамическую классификацию, то зто ограничение может быть снято.) Ограничения полного и неполного обобщения В предыдущих выпусках УМЕ з кратком изложении было отмечено, что ограничение (полный) ((сошр1е$е)) для некоторого обобщения устанавливает, что все экземпляры супертипа должны быть также экземпляром некоторого подтипа в данном разбиении. Вместо этого в языке 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 ния может предоставлять другим некоторое общее поведение.
В качестве примера можно рассмотреть банкомат АТМ, в контексте которого оба варианта использования «Выдать деньги по карточке» и «Осуществить оплату по карточке» используют вариант «Проверить подлинность клиента». Это отношение в общем случае заменяет применение стереотипа «использует». ° Обобщение варианта использования означает, что один вариант использования является вариацией другого. Таким образом, можно иметь один вариант использования для «Выдать деньги по карточке» (базовый вариант использования) и другой вариант использования для ситуации, когда выдача денег невозможна по причине отсутствия средств на счету клиента.
Отказ от выплаты денег можно представить в виде отдельного варианта использования, который уточняет базовый вариант использования. (Кроме того, можно определить еще и дополнительный сценарий для варианта использования «Выдать деньги по карточке».) В этом случае специальный вариант использования, подобно рассмотренному выше, может изменить какой-либо аспект базового варианта использования. ° Конструкция «расширяет» является стереотипом зависимости.
Она обеспечивает более управляемую форму расширения по сравнению с отношением обобщения. В этом случае в базовом варианте использования задается несколько точек расширения. Включающий вариант использования может вносить изменения в свое поведение только в этих точках расширения. К примеру, при рассмотрении покупки товара через Интернет можно определить один вариант использования для покупки товара с точками расширения для ввода информации о доставке товара и ввода информации об оплате товара. После чего этот вариант использования может быть расширен для постоянных клиентов, для которых подобная информация может быть получена другим способом. Существует некоторая путаница насчет старой и новой интерпретаций указанных отношений.