Диаграмма состояний была бы не очень полезной, если бы она
содержала только переходы (безусловные и условные), соответствующие генерируемым
во время работы системы событиям. Являясь описанием поведения объекта, диаграмма
состояний должна описывать, что делает объект в ответ на переход в некоторое
состояние или на возникновение некоторого события. Для этого в диаграмму
состояний включаются описания активностей и действий.
Активностью называется операция, связанная с каким-либо
состоянием объекта (она выполняется, когда объект попадает в указанное
состояние); выполнение активности требует определенного времени. Примеры
активностей: выдача картинки на экран телевизора, телефонный звонок, считывание
порции файла в буфер и т.п.; иногда активностью бывает просто приостановка
выполнения программы (пауза), чтобы обеспечить необходимое время пребывания в
соответствующем состоянии (это бывает особенно важно для параллельной
асинхронной программы). Активность связана с состоянием, поэтому на диаграмме
состояний она обозначается через "do: имя_активности" в узле,
описывающем соответствующее состояние (см. рисунок 2.48).
Рис. 2.48. Указание активностей и действий на диаграмме
состояний
Действием называется мгновенная операция, связанная с
событием: при возникновении события происходит не только переход объекта в новое
состояние, но и выполняется действие, связанное с этим событием. Например, в
телефонной сети событие повесил трубку сопровождается действием разъединить
связь (см. рисунок 2.49). Действие указывается на диаграмме состояний вслед за
событием, которому оно соответствует, и его имя (или описание) отделяется от
имени события косой чертой ("/") (см. рисунок 2.48).
Рис. 2.49. Диаграмма состояний телефонной линии, на которой
указаны активности и действия
Действия могут также представлять внутренние операции
управления объекта, как например, присваивание значений атрибутам или генерация
других событий.
|