OpenU.Ru
Состояние, которое описывает существование объекта определенного класса в данной
точке вычисления, например, в представлении взаимодействия или на графе деятельности.
См. control flow; class-in-state.
Семантика
На графах деятельности и в представлении взаимодействия поток управления между
операциями в целевых объектах изображается при помощи сообщений. При этом сообщения
не показывают поток тех объектов, которые являются аргументами операций, - этот
поток информации можно представить в поведенческих моделях, используя состояния
потока объектов.
Состояние потока объектов описывает объект какого-либо класса, который существует
в определенной точке вычислений, например на графе деятельности или в представлении
взаимодействия. Этот объект может быть выходным значением одной деятельности
и входным для многих других. На графе деятельности объект может являться целью
перехода (чаще всего развилкой, тогда как разветвлением будет главный путь управления)
или исходной точкой перехода по завершении, идущему к деятельности. Состояние
потока объектов активизируется при фактическом запуске предыдущего перехода.
Именно таким образом изображается создание нового объекта данного класса. Чтобы
показать не создание нового объекта, а его переход в новое состояние, нужно
объявить состояние потока объектов в виде класса в определенном состоянии (class-in-state).
Состояние потока объектов должно соответствовать типу результата или параметру,
который оно собой представляет. Если это состояние является выходным значением
операции, то оно должно соответствовать типу результата, если входным - то типу
параметра.
Если за состоянием потока объектов следует переход по завершении, идущему к
деятельности, то ее можно начинать, как только будет получено значение объекта.
Никакой дополнительной передачи управления не требуется. Другими словами, создание
данных в правильной форме запускает деятельность.
Для того чтобы показать, что для запуска деятельности требуется и путь управления,
и наличие значения, предыдущее действие на пути управления и состояние потока
объектов для этого значения сводят к комплексному переходу. Деятельность осуществляется
тогда, когда готовы все входящие переходы. Несколько маршрутов, ведущих к переходу,
обозначают синхронизацию.
Состояния потока объектов удобно использовать для описания отношений вход-выход.
Это важно для понимания модели человеком, а не для точной спецификации вычислений,
так как информация, которую передает состояние потока объектов, доступна и другим
образом.
Создание события деятельностью можно смоделировать в виде состояния потока объектов,
классификатором которого является сигнал. В этом случае может использоваться
стереотип "signal". Состояние потока объектов является выходным значением
деятельности. Если деятельность порождает несколько событий, то состояния потока
объектов будут являться целями развилки.
Нотация
Объект класса в определенном состоянии изображается на диаграмме деятельности в виде прямоугольника, в котором за подчеркнутым именем класса следует имя состояния, взятое в квадратные скобки:
Имя-класса [Имя-состояния]
Например:
Order [Placed]
Символ потока объектов указывает на существование не просто объекта в виде данных, а объекта, который участвует в работе процедуры. Символ потока объектов (представляющий собой состояние) может являться целью для одной стрелки перехода и исходной точкой - для нескольких стрелок. Чтобы отличить их от обычных переходов диаграммы деятельности, их изображают в виде пунктирных, а не непрерывных стрелок.
Пример
На рис. 135 изображены состояния потока объектов, относящиеся к диаграмме деятельности.
Состояние потока объектов создается при завершении операции. Например, состояние
Заказ [Помещен] создается как результат по завершении операции Запросить услугу.
Поскольку за этой деятельностью следует другая, состояние потока объектов Заказ
[Помещен] является одним из входных значений у символа развилки. С другой стороны,
состояние Заказ [Поступил] является результатом деятельности Принять заказ,
у которой нет последующих деятельностей.
Рис. 135. Состояний потока объектов на диаграмме деятельности
На рис. 136 изображена часть диаграммы деятельности, которая описывает строительство
дома. После того как сделан сруб (Build frame), плотник может начинать работать
над крышей, а дом готов для прокладки водопровода (Install plumbing). Эти события
смоделированы в виде состояний потока объектов сигналов Carpenter free (Плотник
свободен (и может работать над крышей дома (Build roof))) и Frame ready (Сруб
сделан). Следовательно, состояния потока объектов изображаются как входные значения
этих деятельностей. В данной модели порождение события при завершении одной
деятельности и использование его для запуска следующей деятельности при их связывании
является неявным. Таким образом, событие можно не показывать. Изображение сигналов
в виде состоянии потока объектов служит скорее для большей информативности,
нежели для структуры реализации в программном коде.
Рис. 136. Порождение сигнала на диаграмме деятельности
Обсуждение
Состояние потока объектов является представлением потока данных какого-либо
вычисления. В отличие от обычного потока данных, это состояние существует в
определенной точке модели потока управления (конечном автомате или на графе
деятельности), а не в модели потока данных. Это прямо указывает на то, что состояния
потока объектов относятся к объектно-ориентированной структуре. Объектно-ориентированные
технологии объединяют структуры данных, поток управления и поток данных в единую
модель.