На этом шаге рассмотрим типичные приемы моделирования операций в UML.
Диаграммы деятельности могут быть связаны с любым моделируемым элементом для визуализации, специфицирования, конструирования и документирования его поведения. Вы можете подключить такие диаграммы к классам, интерфейсам, компонентам, узлам, вариантам использования и кооперациям. Чаще всего элементом, для которого вы будете разрабатывать диаграмму деятельности, будет операция.
Использованная подобным образом, диаграмма выступает просто в качестве блок-схемы действий, выполняемых данной операцией. Главное преимущество диаграммы деятельности в том, что все элементы, указанные на ней, семантически связываются в одну модель. Например, любая другая операция или сигнал, на которую/ который ссылается действие, может подвергнуться проверке на соответствие классу целевого объекта.
Чтобы смоделировать операцию, необходимо:
На рис. 1 вы видите диаграмму деятельности для класса Line (Линия), специфицирующую алгоритм операции intersection (пересечение), сигнатура которой включает один параметр (line класса Line) и одно возвращаемое значение (класса Point – Точка).
Рис.1. Моделирование операции
Класс Line имеет два интересующих нас атрибута: slope (наклон) и delta (смещение линии относительно начала координат).
Алгоритм операции прост. Во-первых, есть защитное условие, которое проверяет, не равен ли наклон slope данной линии наклону линии-параметра line. Если это так, линии не пересекаются и возвращается точка Point(0,0). В противном случае операция сначала вычисляет значение x точки пересечения, затем – значение y. Как x, так и y – объекты, локальные по отношению к операции. И наконец, возвращается точка Point(x,y).
Использование диаграмм деятельности для изображения блок-схемы операции – отнюдь не самое важное в программировании с помощью UML. Вы можете схематично выразить каждую операцию, но практически не должны этого делать. Обычно более целесообразно написание тела операции на определенном языке программирования. Есть смысл прибегать к диаграммам деятельности для моделирования операций, поведение которых трудно для понимания на основе одного лишь исходного кода. Взгляд на блок-схему проясняет алгоритм, который сложно разглядеть в самом коде.
На следующем шаге рассмотрим прямое и обратное проектирование диаграмм деятельности в UML.