Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_ЛекцииТИПИС_ 2.doc
Скачиваний:
23
Добавлен:
24.09.2019
Размер:
1.43 Mб
Скачать
    1. Автомат или модель состояний.

 Автомат – отображает жизненные циклы объекта или другой сущности в системе.

Чаще всего автомат или модель состояний рассматривается по отношению к объекту определённого класса.

В определении объекта, как элемента объектной модели сказано, что Объект обладает тремя составляющими

  • Состояние (state)

  • Поведение (behavior)

  • Уникальность (identity)

Рис. Пример автомата.

Автомат обладает следующими составляющими.

Состояние (State) - это ситуация в жизни объекта, на протяжении которой он

  • удовлетворяет некоторому условию (обычно речь идёт об атрибутах объекта, то есть значения атрибутов удовлетворяют некоторому условию) ,

  • выполняет определенную деятельность, характ для данного состояния

  • или ожидает какого-то события.

Объект остается в некотором состоянии в течение конечного отрезка времени.

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

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

Деятельность (Activity) - это протяженное во времени неатомарное вычисление внутри автомата.

Действие (Action) - это атомарное вычисление, которое приводит к изменению состояния модели или возврату значения.

Для автомата подразумевается, что

  • возможные состояния рассматриваемой сущности известны и

  • определенны возможные последовательности смены состояния.

  • Возм события тоже опред заранее.

Для построения автомата (модели состояний) необходимо определить

  • возможные состояния объекта,

  • возможные переходы, то есть возможные последовательности смены состояний

  • события, вызывающие переходы.

Состояние (State) . Определение состояний объекта автомата

Состояние определяют следующие элементы:

  • имя - текстовая строка, которая отличает одно состояние от всех остальных. Имя состояния должно быть уникальным внутри объемлющего пакета;

  • значение состояния,

    • то есть какой ситуации в реальной системе соответствует данное состояние

    • условия, которым отвечают значения атрибутов в данном состоянии.

  • Действия и деятельности выполняемые в состояннии

    • действия при входе/выходе - действия, выполняемые при входе в состояние и выходе из него;

      • entry/имяДействия(параметры)

      • exit/имяДействия(параметры)

    • деятельность состояния -do/имяДействия(параметры)

  • внутренние переходы - переходы, обрабатываемые без выхода из состояния – имяПерехода/имяДействияОбработчика(параметры)

  • подсостояния - внутри состояния могут существовать подсостояния, как непересекающиеся (активизируемые последовательно), так и параллельные (активные одновременно);

  • отложенные события - список событий, которые не обработаны в этом состоянии, а отложены и поставлены в очередь для обработки объектом в некотором другом состоянии. имяCобытия/defer

  • Начальное и конечное состояния. В автомате объекта могут быть определены два специальных состояния.

    • начальное состояние, в котором автомат или подсостояние находятся по умолчанию в исходный момент времени. Изображается оно в виде закрашенного кружка.

    • конечное состояние, в котором завершается выполнение автомата или объемлющего состояния. Оно представлено закрашенным кружком, заключенным в окружность.

  • Примечание: На самом деле начальное и конечное состояния - это псевдосостояния: они не имеют ни одной из характеристик нормального состояния, кроме имени. Однако переход из начального состояния в конечное может обладать всеми свойствами, включая сторожевое условие и действие (но не событие-триггер).

Требования к действиям, выполняемым в состояниях.

Действия, выполняемые в состоянии могут включать только элементы, ввденные в описание объекта, для которого разрабатывается автомат, или уже введённые в описание автомата. Могут выполнятся следующие типы действий.

  • изменение значений атрибутов,

    • выполнение проверки условий, в который участвуют атрибуты)

  • вызовы операций (объекта, который владеет автоматом, а также любых других видимых объектов),

  • создание и уничтожение другого объекта

  • посылка объекту сигнала (события)

Переходы. Определение переходов объекта автомата.

Переход - это отношение между двумя состояниями, показывающее, что объект, находящийся в первом состоянии, должен выполнить определенные действия и перейти во второе состояние, как только произойдет указанное событие и будут удовлетворены указанные условия. Говорят, что при таком изменении состояния переход срабатывает. Пока переход не сработал, объект находится в исходном состоянии; после срабатывания он находится в целевом состоянии. Например, Обогреватель может перейти из состояния Ожидание в состояние Активация при возникновении события tooCold (слишкомХолодно) с параметром desiredTemp (желаемаяТемпература).

Переход определяют пять элементов:

  • исходное состояние - состояние, из которого происходит переход. Если объект находится в исходном состоянии, то исходящий переход может сработать, когда объект получит событие-триггер, инициирующее этот переход, причем должно быть выполнено сторожевое условие (если оно задано);

  • событие-триггер – то есть событие, при получении которого объектом, находящимся в исходном состоянии, может сработать переход (при этом должно быть выполнено сторожевое условие);

  • сторожевое условие - булевское выражение, которое вычисляется при получении события-триггера. Если значение истинно, то переходу разрешено сработать, если ложно - переход не срабатывает. Если при этом не задано никакого другого перехода, инициируемого тем же самым событием, то событие теряется;

  • действие - атомарное вычисление, которое может непосредственно воздействовать на объект, владеющий автоматом, или оказать косвенное воздействие на другие объекты, находящиеся в области видимости;

  • целевое состояние - состояние, которое становится активным после завершения перехода.

У перехода может быть несколько исходных состояний (в этом случае он представляет собой слияние нескольких параллельных состояний), а также несколько целевых состояний (в этом случае он представляет собой разделение на несколько параллельных состояний)

Выделяются следующие типы событий-триггеров.

  • сигналы,

  • вызовы,

  • истечение промежутка времени или

У сигнала и вызова могут быть параметры, значения которых доступны переходу, в том числе при вычислении сторожевого условия и выполнении действия.

Выделяется особый вид переходов – нетриггерные, то есть переходы, для которых не требуется события-триггера. Нетриггерный переход, называемый также переходом по завершении. Не триггерный переход срабатывает, когда все действия, определённые для исходного состоянии завершаются.

Более сложные аспекты состояний и переходов

К числу таких дополнительных возможностей относятся действия при входе и выходе, внутренние переходы, деятельности и отложенные события.

Описание событий.

При описании событий необходимо отразить следующие его аспекты:

значение – краткая характеристика того, чему соответствует событие в реальном мире.

предназначение события – указание состояние объекта, в котором данное событие воспринимается.

Указание на переходы, которые могут сработать под действием данного событие.

Данные, переносимые событием - события могут переносить данные, которые определяют значения атрибутов, состояния, в какое переводит данное событие объект.

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

Порядок разработки модели состояний.

Обычно автомат не работает обособленно, автомат взаимодействует с другими автоматами объектов, и с внешней системой.

Выявляются объекты, взаимодействующей в решении рассматриваемой задачи.

Определяется состав модели для каждого объекта.

То есть выявляются

  • все состояния,

  • переходы,

  • события.

Строится графически модель состояний для каждого объекта, участвующего во взаимодействии. На модели отображаются состояния, переходы, указываются события переходов со сторожевыми условиями и отмечаются где эти события порождаются, в каких состояниях.. Каждое событие должно быть отнесено к какому либо состоянию объекта, должно быть определено условие его порождения.

Описываются состояния.

Для состояния определяется

  • имя,

  • значение,

  • действия,

  • деятельность.

Описываются действия и деятельности состояний. Действия и деятельности описываются как методы классов.

nameAction()

{a=b;

If c<d sob1(sdd);

}

sob1(sdd) - выработка события sob1 событие несёт данные sdd,

При описании состояний необходимо контролировать, что бы все включённые в модель события были распределены по деятельностям и действиям состояний.

Описываются переходы.

Начальное, конечное состояние перехода,

Выявляются события, вызывающие переход. Определяется локализация событий, то есть принадлежность их каким либо объектам, или системе в целом, или событие может быть определено как внешнее.

Для каждого перехода – выявляется сторожевое условие, то есть условие, при выполнение которого переход срабатывает. Подразумевается, что является необходимым условием срабатывания перехода, окончательную возможность срабатывания определяет дополнительное условие.

Например нажатие кнопки вызова лифта является необходимым условием его прибытия. Дополнительным условием является его не занятость в настоящее время.

Если переход триггерный, до реализуется в виде метода. Метод должен быть открытым, так как подразумевается, что переход вызывается событием, которое может быть связано с другим объектом, то есть переход может вызываться из другого объекта.

Метод, соответствующий переходу, обычно включает проверку сторожевого условия и выполнение действий, соответствующих переходу, если условие выполняется. (изменение значений атрибутов, остановка таймера, и т.д.)

perS1_S2()

{ if (<условие>)

{a=d;

}

/////////

}

Если переход по завершению, то его можно реализовать в виде атомарных вычислений по изменению атрибутов, вычисления добавляются к соответствующей деятельности состояния, из которого происходит переход.

Описываются события для каждого объекта

События, это внутренние элементы объектов, в которых они вызываются, поэтому они описываются в виде приватных методов. Описание события обычно включает вызов метода соответствующего переходу.

Тоже в виде методов

private sob()

{

d.d1_d2()

// d – объект в котором, производится переход

}

Во многих случаях для события достаточно выделить некоторый блок кода, не выделяя его в отдельный метод.