Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Uml Book (Rus).doc
Скачиваний:
15
Добавлен:
11.08.2019
Размер:
58.74 Mб
Скачать

Статические и динамические типы

Большинство объектно-ориентированных языков программирования являются статически типизированными. Другими словами, тип связывается с объектом в момент создания последнего (подробнее об экземплярах см. главу 13). И все же объект будет, вероятно, играть различные роли в разные моменты времени. Это означает, что использующие объект клиенты взаимодействуют с ним посредством различных наборов интерфейсов, которые описывают представляющие интерес и возможно, перекрывающиеся множества операций.

Модель статических характеристик объекта может быть визуализирована в виде диаграммы классов (см. главу 8). Однако при моделировании таких сущностей, как бизнес-объекты, чьи роли естественно изменяются по ходу работы, бывает полезно явным образом промоделировать динамическую природу типа таких объ­ектов. В этих условиях объект во время своей жизни может приобретать и утрачи­вать типы.

Моделирование динамического типа состоит из следующих шагов:

1. Определите возможные типы объекта, показав каждый из них в виде класса со стереотипом type (если от абстракции требуется структура и поведение) или interface (если требуется только поведение).

2. Смоделируйте все роли класса объекта в любой возможный момент време­ни. Это делается двумя способами:

- во-первых, на диаграмме классов явно прописывается каждая роль, которую данный класс играет в ассоциациях с другими классами (см. главы 5 и 10). Тем самым определяется лицо, которое класс имеет в контексте ассоци­ированного с ним объекта;

- во-вторых, на диаграмме классов с помощью обобщений специфицируют­ся отношения «класс-тип».

3. На диаграмме взаимодействий (см. главу 18) изобразите каждый экземпляр динамически типизированного класса. Роль экземпляра нужно указать в скоб­ках ниже имени объекта.

4. Чтобы показать смену ролей объекта, изобразите объект по одному разу для каждой роли, которую он играет во взаимодействии, и соедините эти объек­ты сообщением со стереотипом become.

В качестве примера на рис. 11.7 показаны роли, которые класс Человек может играть в контексте системы управления человеческими ресурсами.

Из этой диаграммы явствует, что экземпляры класса Человек могут относить­ся к одному из трех типов - Кандидат, Работник и Пенсионер.

Динамическая природа типа Человека изображена на рис. 11.8. В этом фр;ц -менте диаграммы взаимодействия объект р (Человек) меняет роль с Кандидата на Работника.

Советы

Моделируя интерфейс на языке UML, помните, что он должен описывать не­который стыковочный узел системы, отделяя спецификацию от реализации. Хо­рошо структурированный интерфейс характеризуется следующими свойствами:

  • одновременно обладает простотой и завершенностью, то есть содержит все операции, необходимые и достаточные для специфицирования конкретного сервиса;

  • понятен, то есть содержит информацию, достаточную для его применения, и не требует для этого обращения к его реализации и примерам использо­вания;

  • содержит информацию, достаточную для понимания пользователем основ­ных свойств, но не перегружен сведениями, касающимися деталей всех опе­раций.

Изображая интерфейс на языке UML, руководствуйтесь приведенными ниже правилами:

  • используйте сокращенную нотацию, если надо просто показать наличие сты­ковочного узла в системе. Чаще всего она применяется при работе с компо­нентами, а не с классами;

  • расширенную форму применяйте в случае, если надо визуализировать дета­ли самого сервиса. Чаще всего это нужно делать при специфицировании сты­ковочных узлов в системе, содержащей пакеты или подсистемы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]