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

Термины и понятия

Взаимодействием (Interaction) называется поведение, выражающееся в обмене сообщениями между множеством объектов в некотором контексте, в результате чего достигается определенная цель. Сообщение (Message) - это спецификация обмена данными между объектами, при котором передается некая информация в расчете на то, что в ответ последует определенное действие.

Контекст

Взаимодействия имеют место всегда, когда объекты связаны друг с другом (эти структурные связи отображаются на диаграммах объектов, см. главу 14). Взаимодействия можно обнаружить в кооперациях объектов (см. главу 27) в контексте системы или подсистемы (см. главу 31). Они существуют и в контексте операций и в контексте классов.

Чаще всего взаимодействия обнаруживаются в кооперации объектов в контексте системы или подсистемы как целого. Скажем, в системе электронной коммерции на стороне клиента есть взаимодействующие друг с другом объекты (например, экземпляры класса ЗаказКниги и ФормаЗаказа). На стороне клиента есть объекты (тот же ЗаказКниги), которые взаимодействуют с объектами на сторож сервера (например, с экземпляром класса ДиспетчерЗаказов). Таким образом взаимодействия охватывают не только локальные кооперации объектов, как в первом случае, но могут распространяться и на несколько концептуальных уровней системы, как во втором случае.

Взаимодействия между объектами встречаются и при реализации операций (см. главы 4 и 9). Параметры операции, любые локальные для нее переменные и глобальные объекты, видимые внутри операции, могут взаимодействовать друг с другом для выполнения реализуемого ею алгоритма (о моделировании опера­ций подробно рассказывается в главах 19 и 27). Так, вызов операции moveToPosition(p : Position), определенной в классе мобильного робота, предполага­ет взаимодействие между параметром (р), глобальным для операции объектом (current Posit ion) и, возможно, несколькими локальными объектами (скажем, локальными переменными, используемыми внутри операции для вычисления промежуточных точек на пути робота к новому местоположению).

Наконец, взаимодействия существуют в контексте класса (см. главы 4 и 9). С их помощью можно визуализировать, специфицировать, конструировать и до­кументировать семантику класса. Например, для понимания назначения класса RayTraceAgent (АгентТрассировкиЛучей) можно создать взаимодействие, показывающее, как атрибуты этого класса сотрудничают друг с другом (а также с гло­бальными по отношению к его экземплярам объектами и с параметрами, опреде­ленными в операциях класса).

Примечание Взаимодействия могут входить и в представление компонента (см. главу 25), узла (см. главу 26) или прецедента (см. главу 16), которые в UML являются разновидностями классификаторов (см. главу 9) В контексте прецедентов взаимодействие являет собой сценарий, который, в свою очередь, представляет один из потоков деятельно­сти прецедента (о моделировании реализации прецедента рассказывается в главе 27).

Объекты и роли

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

Примечание Именно эта особенность отличает кооперации, все объекты которых являются прототипами, играющими определенные роли, а не конкретными объектами реального мира.

В контексте взаимодействия можно встретить экземпляры (см. главу 13) классов, компонентов, узлов и прецедентов. Хотя у абстрактных классов (см. главу 4) интерфейсов (см. главу 11) по определению не бывает непосредственных экземпляров, во взаимодействиях их присутствие допустимо. Конечно, они представляют собой не экземпляры абстрактного класса или интерфейса, а экземпляры или прототипы) любого конкретного потомка данного абстрактного класса или некоего конкретного класса, реализующего интерфейс. . J Диаграмму объектов (см. главу 14) можно рассматривать как представление статического аспекта взаимодействия, поскольку она описывает сцену, определяя объекты, работающие совместно. Взаимодействие добавляет к этому динамическую последовательность сообщений, циркулирующих вдоль связей между объектами.

Связи

Связью (Link) называется семантическое соединение между объектами. В общем случае связь представляет собой экземпляр ассоциации (см. главы 5 и 10). как показано на рис. 15.2, если два класса входят в ассоциацию, то между их экземплярами может наличествовать связь; если же между двумя объектами существуeт связь, один из них может посылать сообщения другому.

Связь определяет путь, по которому один объект передает сообщения другому или самому себе). Чаще всего достаточно указать, что такой путь существует.

Если вы хотите его подробно специфицировать, дополните соответствующую концевую точку связи одним из следующих стандартных стереотипов (см. главу 6 «Приложение В»):

  • association - показывает, что соответствующий объект видим для ассоциации;

  • self - соответствующий объект видим, потому что является диспетчером || для операции;

  • global - соответствующий объект видим, так как находится в объемлющей

области действия;

  • local - соответствующий объект видим, поскольку находится в локальной

области действия;

  • parameter - соответствующий объект видим, так как является параметром

(примеры перечисленных выше стереотипов представлены в главе 18).

Примечание Поскольку связь является экземпляром ассоциации, при ее изобра­жении можно использовать большую часть применимых к ассоци­ациям дополнений: имя, ролевое имя, навигацию и агрегирование. Однако кратность к связям не применима, поскольку они являют­ся экземплярами ассоциации.

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