Диаграммы взаимодействия (interaction diagrams) являются моделями, описывающими поведение взаимодействующих групп объектов. Как правило, диаграмма взаимодействия охватывает поведение объектов в рамках только одного варианта использования. На такой диаграмме отображаются ряд объектов и те сообщения, которыми они обмениваются между собой. Проиллюстрируем данный подход на примере достаточно простого варианта использования, который описывает следующее поведение:
– Окно Ввода Заказа посылает Заказу сообщение «приготовиться»;
– Заказ посылает данное сообщение каждой Строке заказа в данном Заказе;
– Каждая Строка заказа проверяет состояние определенного Запаса товара: Если данная проверка удовлетворяется (результат — true), то Строка заказа удаляет соответствующее количество товара из Запаса.
В противном случае количество Запаса снижается до уровня повторного заказа, и Запас запрашивает новую поставку товара. Существуют два вида диаграмм взаимодействия:
– диаграммы последовательности (sequence diagrams);
– кооперативные диаграммы (collaboration diagrams).
У разных разработчиков имеются различные предпочтения вида диаграммы взаимодействия. В диаграмме последовательности делается акцент именно на последовательность сообщений: легче наблюдать порядок, в котором происходят различные события. На кооперативной диаграмме можно использовать пространственное расположение объектов для того, чтобы показать их статическое взаимодействие. Одним из принципиальных свойств любой формы диаграммы взаимодействия является их простота. Посмотрев на диаграмму, можно легко увидеть все сообщения. Однако если попытаться изобразить нечто более сложное, чем единственный последовательный процесс без особых условных переходов или циклов, такой подход не сработает. Диаграммы взаимодействия наиболее хороши, когда они отображают простое поведение; при более сложном поведении они быстро теряют свою ясность и наглядность. Если нужно показать сложное поведение системы на одной диаграмме, то следует использовать диаграмму деятельностей. Диаграммы взаимодействия следует использовать, когда нужно описать поведение нескольких объектов в рамках одного варианта использования. Они хороши для отображения взаимодействия между объектами и вовсе не так хороши для точного описания их поведения. Если нужно описать поведение единственного объекта во многих вариантах использования, то следует применить диаграмму состояний. Если же описывается поведение во многих вариантах использования или многих параллельных процессах, следует рассмотреть диаграмму деятельностей. |