На этом шаге рассмотрим типичные приемы моделирования реализации операции в UML.
Еще одно назначение коопераций – это моделирование реализации операций. Часто ее можно специфицировать непосредственно в коде, однако для тех операций, которые требуют совместной работы нескольких объектов, перед написанием кода лучше смоделировать реализацию с помощью кооперации.
Контекст реализации операции составляют параметры, возвращаемые значения и объекты, локальные по отношению к ней. Таким образом, эти элементы видимы для структурного аспекта кооперации, которая реализует данную операцию (подобно тому как действующие лица видимы для структурного аспекта кооперации, реализующей вариант использования). Связи между этими частями можно смоделировать при помощи диаграмм составной структуры, описывающих структурную часть кооперации.
Чтобы смоделировать реализацию операции, необходимо:
В качестве примера на рис. 1 показан активный класс RenderFrame (ПостроениеФрейма) и раскрыты три его операции.
Рис.1. Моделирование реализации операции
Функция progress (обработка) достаточно проста и может быть реализована сразу в коде, приведенном в примечании. А вот операция render (визуализировать) намного сложнее, поэтому ее реализация возложена на кооперацию Ray trace (Трассировка лучей). Хотя на рисунке это не показано, вы могли бы изучить кооперацию изнутри и увидеть ее структурные и поведенческие аспекты.
Операцию можно моделировать и с использованием диаграмм деятельности. Эти диаграммы, по сути, представляют собой блок-схемы, поэтому для алгоритмически сложных операций, которые нужно моделировать явно, это обычно наилучший выбор. Однако если операция требует участия множества объектов, лучше выбрать кооперации, поскольку они позволяют моделировать как структурные, так и поведенческие аспекты операции.
На следующем шаге рассмотрим типичные приемы моделирования механизма в UML.