Стереотипы являются одним из трех типов механизмов расширяемости в унифицированном языке моделирования (UML). Они позволяют проектировщикам расширять словарь UML для создания новых элементов моделирования, получаемых из существующих, но имеющих определенные свойства, которые подходят для конкретной проблемы предметной области или для другого специализированного использования. Термин происходит от первоначального значения слова «стереотип», который используется в книгопечатании. Например, при моделировании сети вам могут понадобиться символы для представления маршрутизаторов и концентраторов. С помощью стереотипных узлов вы можете представлять их в виде примитивных строительных блоков.
Графически стереотип отображается как имя, заключенное в кавычки («», или, если такие кавычки недопустимы, <<>>) и расположенное над именем другого элемента. В дополнение или в качестве альтернативы он может быть обозначен соответствующей иконкой. Значок может даже заменить весь символ UML. Например, стереотипы диаграммы классов могут быть использованы для описания методов поведения, таких как «конструктор» и «геттер». Несмотря на своё внешнее представление, «интерфейс» - не стереотип, а классификатор.[1]
![](http://upload.wikimedia.org/wikipedia/ru/thumb/1/12/%D0%93%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%B2%D1%8F%D0%B7%D0%B5%D0%B9_%D1%81_%D1%80%D0%B0%D0%B7%D0%BB%D0%B8%D1%87%D0%BD%D1%8B%D0%BC%D0%B8_%D1%81%D1%82%D0%B5%D1%80%D0%B5%D0%BE%D1%82%D0%B8%D0%BF%D0%B0%D0%BC%D0%B8.jpeg/220px-%D0%93%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%B2%D1%8F%D0%B7%D0%B5%D0%B9_%D1%81_%D1%80%D0%B0%D0%B7%D0%BB%D0%B8%D1%87%D0%BD%D1%8B%D0%BC%D0%B8_%D1%81%D1%82%D0%B5%D1%80%D0%B5%D0%BE%D1%82%D0%B8%D0%BF%D0%B0%D0%BC%D0%B8.jpeg)
Одной из альтернатив стереотипам, предложенной Петром Коудом[англ.] в своей книге «Применение Java в моделировании цветом с UML: Организация и производство» является использование цветных архетипов. Архетипы, обозначенные UML-блоками разных цветов, могут быть использованы в сочетании со стереотипами. Это добавочное определение назначения показывает роль, которую играет объект UML в рамках более широкой программной системы.
Атрибуты стереотипов
правитьНачиная с версии 2.0 независимое именованное значение считается атрибутом стереотипа. Термин «именованное значение» до сих пор сохраняется. Каждый стереотип имеет от нуля или более определений меток, и все стереотипные элементы UML имеют соответствующее число именованных значений.
Стереотипы, определяемые UML
правитьСтереотип/ ключевое слово | К чему применим | Назначение |
---|---|---|
actor | Класс (class) | Определяет связанное множество ролей, которые играет пользователь прецедента при взаимодействии с ним |
access | Зависимость (dependency) | Сообщает, что открытое содержание целевого пакета доступно в пространстве имен исходного пакета |
association | Концевая точка связи (link end) | Указывает, что соответствующий объект видим ассоциацией |
become | Сообщение (message) | Целевой объект совпадает с исходным, но в более поздний момент времени. При этом, возможно, у него будут другие значения, состояния или роли |
bind | Зависимость (dependency) | Исходный класс инстанцирует целевой шаблон с данными фактическими параметрами |
call | Зависимость (dependency) | Исходная операция вызывает целевую |
copy | Сообщение (message) | Целевой объект - это точная, но независимая копия исходного |
create | Событие (event), сообщение (message) | Целевой объект создан в результате события или сообщения |
derive | Зависимость (dependency) | Исходный объект может быть вычислен по целевому |
destroy | Событие (event), сообщение (message) | Целевой объект уничтожен в результате события или сообщения |
document | Компонент (component) | Компонент представляет документ |
enumeration | Класс (class) | Определяет перечислимый тип, включая его возможные значения как набор идентификаторов |
exception | Класс (class) | Определяет событие, которое может быть возбуждено или перехвачено операцией |
executable | Компонент (component) | Описывает компонент, который может быть выполнен в узле |
extend | Зависимость (dependency) | Целевой вариант использования расширяет поведение исходного в данной точке расширения |
facade | Пакет (package) | Пакет, который является лишь представлением другого пакета |
file | Компонент (component) | Компонент, который представляет документ, содержащий исходный код или данные |
framework | Пакет (package) | Пакет, состоящий в основном из образцов (паттернов) |
friend | Зависимость (dependency) | Исходный класс имеет специальные права видимости в целевом |
global | Концевая точка связи (link end) | Соответствующий объект видим, поскольку принадлежит объемлющей области действия |
import | Зависимость (dependency) | Открытое содержание целевого пакета становится частью плоского пространства имен исходного пакета, как если бы оно было объявлено непосредственно в нём |
implementation | Обобщение (generalization) | Потомок наследует реализацию родителя, но не открывает и не поддерживает его интерфейсов, вследствие чего не может быть подставлен вместо родителя |
implementationClass | Класс (class) | Реализация класса на некотором языке программирования |
include | Зависимость (dependency) | Исходный прецедент явно включает поведение другого прецедента в точке, определяемой исходным |
instanceOf | Зависимость (dependency) | Исходный объект является экземпляром целевого классификатора |
instantiate | Зависимость (dependency) | Операции над исходным классом создают экземпляры целевого класса |
interface | Класс (class) | Описывает множество операций, определяющих, что может делать класс или компонент |
invariant | Ограничение (constraint) | Ограничение, которое всегда должно выполняться для ассоциированного элемента |
library | Компонент (component) | Статическая или динамическая объектная библиотека |
local | Концевая точка связи (link end) | Соответствующий объект видим, так как находится в локальной области действия |
metaclass | Классификатор (classifier) | Классификатор, все объекты которого являются классами |
model | Пакет (package) | Описывает семантически замкнутую абстракцию системы |
parameter | Концевая точка связи (link end) | Соответствующий объект видим, так как является параметром |
postcondition | Ограничение (constraint) | Ограничение, которое должно выполняться после выполнения операции |
powertype | Класс (class) | Классификатор, все объекты которого являются потомками данного родителя |
precondition | Ограничение (constraint) | Ограничение, которое должно выполняться перед выполнением операции |
process | Класс (class) | Классификатор, экземпляр которого представляет ресурсоемкий поток управления |
refine | Зависимость (dependency) | Говорит, что исходный объект является более детальной абстракцией, чем целевой |
requirement | Комментарий (comment) | Описывает желаемое свойство или поведение системы |
responsibility | Комментарий (comment) | Описывает контракт или обязательство класса |
send | Зависимость (dependency) | Исходная операция посылает целевое событие |
signal | Класс (class) | Асинхронный стимул, который передается одним экземпляром другому |
stereotype | Класс (class) | Классификатор - это стереотип, который может быть применен к другим элементам |
stub | Пакет (package) | Пакет выступает в роли заместителя для открытого содержимого другого пакета |
subsystem | Пакет (package) | Описывает группирование элементов, ряд которых составляет спецификацию поведения других элементов |
system | Пакет (package) | Описывает пакет, представляющий всю моделируемую систему |
table | Компонент (component) | Компонент, представляющий таблицу базы данных |
thread | Класс (class) | Классификатор, экземпляр которого представляет облегченный поток управления |
trace | Зависимость (dependency) | Целевой элемент - это исторический предок исходного |
type | Класс (class) | Абстрактный класс, который используется только для спецификации структуры и поведения (но не реализации) множества объектов |
use | Зависимость (dependency) | Семантика исходного элемента зависит от семантики открытого содержания целевого элемента |
utility | Класс (class) | Определяет класс, для которого область действия всех атрибутов и операций - класс |
Примечания
править- ↑ Object Management Group, UML Superstructure Specification Архивная копия от 24 июня 2015 на Wayback Machine, v2.0, p. 33, August 2005.
Литература
править- Крэг Ларман. Применение UML 2.0 и шаблонов проектирования = Applying UML and Patterns : An Introduction to Object-Oriented Analysis and Design and Iterative Development. — 3-е изд. — М.: Вильямс, 2006. — 736 с. — ISBN 0-13-148906-2.
- Джозеф Шмуллер. Освой самостоятельно UML 2 за 24 часа. Практическое руководство = Sams Teach Yourself UML in 24 Hours, Complete Starter Kit. — М.: Вильямс, 2005. — 416 с. — ISBN 0-672-32640-X.
- Грейди Буч, Джеймс Рамбо, Айвар Джекобсон. Язык UML. Руководство пользователя = The Unified Modeling Language user guide. — 2-е изд. — М., СПб.: ДМК Пресс, Питер, 2004. — 432 с. — ISBN 5-94074-260-2.
- Буч Г., Якобсон А., Рамбо Дж. UML. Классика CS. 2-е изд. / Пер. с англ.; Под общей редакцией проф. С. Орлова — СПб.: Питер, 2006. — 736 с. ISBN 5-469-00599-2
Ссылки
править- UML Stereotype
- Язык UML Руководство пользователя, Г.Буч, Д.Рамбо, А.Джекобсон
Этот перевод статьи с другого языка требует улучшения (см. Рекомендации по переводу). |