Главная » Delphi » Delphi 2006 – Диаграммы состояний (State Machine Diagram)

0

Диаграммы состояний стали новым типом диаграмм в версии UML 2.0. Они особенно важны для разработчика, использующего среду Delphi. Дело в том, что в последней версии Delphi 2006 имеется технология моделирования ECO III. Она расширена средствами визуального построения алгоритмов. С помощью этих средств описывается работа разных элементов модели. Ранее для описания модели и генерации исходного кода на языке Delphi применялись лишь статические диаграммы классов. Теперь задействованы и диаграммы состояний.

В основу диаграмм состояний положена концепция автоматов. Автомат представляет собой объект, который может находиться в одном из состояний ограниченного перечня и способен переходить из состояния в состояние по некоторым правилам. Доказано, что с помощью концепции автоматов можно запрограммировать алгоритм сколь угодно высокой сложности, если его можно записать на императивном языке программирования. Автоматы уже упоминались при описании диаграмм состояний UML 1.5.

Диаграмма состояний всегда относится к одному конкретному классу и описывает только его внутреннее функционирование. Конкретное состояние на диаграмме отображается с помощью элемента State. Начальное и конечное состояния (элементы Initial и Final) на диаграмме отображаются сплошным кружком и сплошным кружком с каймой, соответственно. Фактически, они представляют собой псевдосостояния, не возникающие в реальной работе. Начальное и конечное состояния лишь наглядно задают последовательность входа в первое рабочее состояние и выхода из последнего рабочего состояния.

Существуют версии начального и конечного состояний, которые являются локальными по отношению к конкретному состоянию. Они задают начало и конец последовательности действий уже внутри этого существующего состояния. В таком случае состояние, охватывающее другие состояния, называется суперсостоянием, а вложенные в него состояния — подсостояни- ями. Подобный подход иерархической организации состояний удобен тем, что позволяет сформировать общие (одинаковые) реакции различных под- состояний на уровне одного суперсостояния. Допустим, имеется стандартное аварийное состояние и стандартный переход в него, вызываемый операцией отмены. Для каждого состояния на диаграмме можно индивидуально указывать этот переход, а можно объединить их в суперсостояние. Тогда переход в аварийное состояние указывается всего одной линией на диаграмме — она будет исходить только из суперсостояния.

Каждое из состояний на диаграмме состояний не обязано пассивно ожидать некоторого внешнего события, приводящего к переходу основного объекта в следующее состояние. Состояние может само выполнять некоторую внутреннюю деятельность (активность). Такая активность задается в свойстве Do activity. Это свойство состояния позволяет выбрать готовое действие из доступных в проекте (например, взяв с какой-нибудь из диаграмм деятельности). Подобное состояние, когда до него доходит очередь, запускает свое действие и ожидает его завершения, фактически отображая не статическое состояние, а выполнение процесса. Этот процесс может быть прерван, что вызовет переход в другое состояние. А если он закончится успешно, также выполнится соответствующий переход.

В диаграммах состояний UML 2.0, как и в версии UML 1.5, можно описывать историческое состояние. Только в версии UML 2.0 обычное историческое и глубокое историческое состояния разделены на два разных элемента: Shallow History и Deep History, соответственно.

В диаграммах состояний можно применять условный элемент Choice (Выбор). Другой элемент — Junction — выражает слияние и разделение потоков управления. Он представляет собой промежуточный узел, а по внешнему виду аналогичен начальному элементу Initial. В таком узле собираются, а потом вновь расходятся потоки управления.

Бобровский С. И. Технологии Delphi 2006. Новые возможности. — СПб.: Питер, 2006. — 288 е.: ил.

По теме:

  • Комментарии