Открытая коллекция знаний

OpenU.Ru

Справочник UML. Объектно-ориентированное проектирование.

stereotype (стереотип)

Новый вид элемента модели, созданный на основе существующего элемента. Стереотипы могут расширять семантику классов метамодели, но не ее структуру.
См. constraint; tagged value.

Семантика

Стереотип представляет собой вариацию существующего элемента модели, имеющую ту же самую форму (например, атрибуты и отношения), но отличающуюся, по сути. В целом, стереотип обозначает отличительные особенности в использовании элемента. У стереотипизированного элемента могут быть дополнительные ограничения, помимо тех, которые есть у базового элемента, а также различное визуальное представление. Считается, что генераторы кода и прочие инструменты обрабатывают стереотипизированные элементы особым образом, например, создавая другой программный код. Суть в том, что инструмент моделирования, например редактор модели или репозиторий, должен в большинстве случаев обрабатывать стереотипизированный элемент так же, как обычный элемент, обладающий дополнительной текстовой информацией. При этом для некоторых семантических операций он должен учитывать и отличия этого элемента, например, при проверке согласованности, генерации кода и составлении отчетов. Стереотипы представляют собой один из встроенных механизмов расширения языка моделирования.
Каждый стереотип создается на основе какого-либо базового элемента модели. Все элементы, у которых совпадают стереотипы, имеют свойства одного и того же базового элемента модели.
Кроме этого, стереотип можно создать на основе другого стереотипа. Определения стереотипа являются обобщаемыми элементами. Стереотип-прямой потомок имеет все свойства стереотнпа-прямого предка. Однако в конечном итоге все стереотипы являются производными какого-либо элемента модели.
Стереотип может иметь список необходимых тегов, причем у некоторых из них могут быть значения по умолчанию, которые используются в том случае, если именованное значение не указано явно. Можно также определить допустимый ряд значений для каждого
Теги. Все стереотипизироваиные элементы должны иметь именованные значения, указанные вместе со списком тегов. Если у стереотипизнрованного элемента есть теги со значениями по умолчанию, то эти значения используются автоматически при отсутствии явных значении для этих тегов.
У стереотипа может иметься список ограничений, которые описывают дополнительные условия, существующие помимо тех, которые предоставлены базовым элементом. Ограничение будем применяться к любому элементу модели, имеющему этот стереотип. Кроме этого на элемент модели накладывается стереотип, который задается в базовом элементе.
Стереотип представляет собой виртуальный класс метамодели (то есть не объявленный в ней явно), который создается непосредственно в конкретной модели, причем это не вызывает изменений в предопределенной метамодели языка UML. Исходя из этого, нужно давать стереотипам такие имена, которые еще не использовались как имена метаклассов, предопределенных стереотипов или ключевых слов.
Элемент модели может иметь не более одного стереотипа. Возможно, это правило покажется логически необоснованным, однако оно упрощает семантику и нотацию стереотипов. Это никак не ограничивает возможности стереотипов, поскольку допускается их множественное наследование, то есть стереотип может быть прямым потомком нескольких других стереотипов. Любую ситуацию, когда у элемента есть несколько стереотипов, можно представить так, как будто у элемента есть одни стереотип, являющийся прямым потомком всех остальных. Возможно, для подобных случаев разработчику придется создавать некий фиктивный стереотип, который будет включать в себя черты всех других стереотипов, однако, нам кажется, что это редкий случай. Чаще всего все-таки использовать стереотипы просто и удобно.
Некоторые стереотипы предопределены, другие могут быть созданы самими пользователями, так как представляют собой один из механизмов расширения языка UML.
См. constraint; tagged value.

Нотация

Согласно общему правилу, для стереотипа используется тот же самый символ, что и для базового элемента. Над именем элемента (если таковое имеется) помещается соответствующее ключевое слово. Ключевое слово является именем стереотипа, которое пишется в угловых кавычках, использующихся во многих языках для обозначения цитирования (например, "foo"). (Обратите внимание, что угловая кавычка имеет вид двойной угловой скобки, однако при этом в большинстве шрифтов представляет собой один символ. В компьютере почти всегда можно найти программу, выдающую таблицу символов (в Windows - Таблица символов, charmap.exe). Впрочем, те, кто тяготеет к использованию типографских шрифтов, может заменить угловые кавычки на двойные угловые скобки.) Ключевое слово обычно помещается над или перед именем описываемого элемента модели. Строка ключевого слова может также быть использована в качестве элемента в списке. В этом случае ключевое слово применяется к веем последующим элементам до тех нор. пока в списке не встретится другой стереотип или же его не отменит пустая строка стереотипа (" "). Обратите внимание, что имя стереотипа не должно совпадать с каким-либо предопределенным ключевым словом, применимым к тому же самому типу элемента. (Чтобы избежать путаницы, лучше вообще использовать предопределенное ключевое имя для стереотипов - даже в том случае, если стереотип относится к другому элементу модели.)
Нотация стереотипов допускает некоторые расширения, - например, использование пиктограмм или графической маркировки (текстура и цвет изображения). Язык UML не определяет форму графической спецификации стереотипа, поскольку существует множество растровых и штриховых форматов, которые могут использоваться графическим редактором. Впрочем, переносимость такой нотации будет являться вполне серьезной проблемой. Пиктограмму можно использовать двояко. Во-первых, она может заменять собой ключевое слово стереотипа или же дополнять его и находиться при этом внутри символа того базового элемента модели, к которому относится стереотип. Например, в прямоугольнике класса она ставится и верхнем правом углу раздела для имени. В этом случае внутри символа элемента располагается его обычное содержимое. Второй способ упoтребления пиктограмм представляет собой "сокращение" всего символа элемента до одной пиктограммы. Имя элемента при этом либо ставится внутри пиктограммы, либо под или над ней. Вся прочая информация о базовом элементе не видна.
На рис. 170 изображены различные способы нотации имеющего стереотип класса.

Рис. 170. Варианты нотации стереотипа
В языке UML не используется графическая маркировка (например, цвета), поскольку это может представлять проблему для некоторых людей (дальтоников) и для некоторых основных видов оборудования (принтеров, ксероксов и факсов). Поэтому ни один из символов языка UML не требует графической маркировки. Разумеется, вы можете использовать какие угодно средства графической маркировки, облегчающие нам работу. Не стоит, однако, забывать о тех ограничениях, которые при этом получает наша модель. Кроме того, вы должны сохранить способность создавать модели и в общепринятой форме
Объявление стереотипа. Классификация стереотипов сама может быть отображена в виде диаграммы классов. Однако она относится к диаграммам метамодели, поэтому и пользователь, и инструмент моделирования должны отличать ее от обычных диаграмм. На такой диаграмме каждый стереотип изображается в виде символа класса (прямоугольника) с ключевым словом "stereotype". Расширенную иерархию метамодели можно изобразить с помощью отношений обобщения (рис. 171). Поскольку в данном случае существует опасность расширения внутренней иерархии метамодели, инструмент моделирования может отображать эти иерархии на обычных диаграммах классов, не затрагивающих существующую метамодель. Объявления имен стереотипов не входит в число тех возможностей, которые обычно необходимы разработчикам, поэтому оно может осуществляться в качестве вспомогательной задачи поддержки.

Рис. 171. Обьввлемне стереотипа

Алфавитный указатель