Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Тема 5. Облік депозитних операцій

2.

1.

Понятие и структура перехода. Типы переходов

Понятие конечного автомата. Определение события и состояния

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

Событие – это значимое явление, которое имеет определенное положение во времени и пространстве. Оно происходит в некий момент времени, не имеет продолжительности и влечет за собой определенные последствия. В данном случае под событием мы понимаем обобщенное описание множества сходных единичных событий. Конкретное событие называется экземпляром события и может иметь свои собственные параметры. События делятся на внутренние и внешние, причем те и другие могут быть четырех различных видов: событие сигнала, событие вызова, событие изменения и событие времени (таблица № 6).

Таблица № 6

Виды событий

Вид события Описание Синтаксис
Событие сигнала (Signal event) Получение объектом именованного асинхронного сообщения. имя события (атрибут:Тип)
Событие вызова (Call event) Получение объектом явного синхронного запроса в виде вызова его метода. имя операции (атрибут:Тип)
Событие изменения (Change event) Изменение значения в логическом выражении. when(выражение)
Событие времени (Time event) Наступление абсолютного времени или истечение относительного периода времени. after(время)

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

Сигналы могут выступать на диаграммах классов в качестве классификаторов. Для них используется стереотип «signal». Параметры сигнала считаются его атрибутами. Будучи классификаторами, сигналы могут вступать в отношения обобщения, быть потомками других сигналов, наследуя при этом параметры своих предков и инициируя такие же переходы состояния, как и сигналы-предки.

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

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

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

Состояние. Состояние (state) описывает период времени из жизненного цикла объекта. Оно характеризуется:

· набором сходных (с какой-либо точки зрения) значений атрибутов объекта;

· периодом времени, в течение которого объект ожидает наступления события или событий;

· периодом времени, в течение которого объект осуществляет свою деятельность.

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

 

Рис.18. Состояние

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

Переход (transition) из некоторого состояния представляет собой реакцию объекта, находящегося в этом состоянии, на событие. В таблице № 7 приведены типы переходов и те действия, которые они вызывают.

Таблица № 7

Типы переходов и неявных действий

Тип перехода Описание Синтаксис
Действие при входе (Entry action) Действие, которое происходит при входе в состояние. Используется, как правило, для того, чтобы произвести начальные установки для состояния. Уклониться от осуществления действия при входе невозможно, поэтому все действия, протекающие в данном состоянии, принимают начальные установки, вне зависимости от того, как был осуществлен вход в состояние*). entry/действие
Действие при выходе (Exit action) Действие, которое происходит при выходе из состояния. Действие при выходе выполняется перед действием, прикрепленным к переходу, и перед действием при входе в новое состояние. Является возможностью провести очистку состояния*). exit/действие
Внешний переход (External transition) Внешним называется переход, меняющий активное состояние объекта. Внешний переход может также привести к переходу в то же самое состояние или к действиям при входе в целевое состояние и/или при выходе из исходного. На диаграмме внешний переход изображают в виде стрелки, идущей от исходного состояния к целевому. Свойства перехода указываются в виде текста, расположенного у этой стрелки (рис. 19). Событие (атрибут:Тип) [выражение]/действие
Внутренний переход (Internal transition) Реакция на событие, которое приводит к выполнению действия, но не изменению состояния объекта или выполнению действий при входе или выходе. Внутренние переходы удобны при моделировании действий прерывания, не требующих изменения состояния, например при подсчете количества каких-либо событий или выдаче на экран справочной информации. Не является внутренним переходом переход в себя (self-transition), так как он вызывает действия при входе и выходе (объект существует в некоем состоянии, а потом входит в него повторно). Событие (атрибут:Тип) [выражение]/действие
Переход по завершению (Completion transition) Переходом по завершению называется такой переход, для которого не существует явного переключающего события и который может запускаться по завершении деятельности в данном состоянии. Для этого перехода определяется сторожевое условие, которое вычисляется только один раз — при завершении деятельности в этом состоянии.    

Примечание: *) Действия при входе и выходе можно назначать входящим и исходящим переходам, однако когда эти действия принадлежат всему состоянию, это дает возможность определять действия независимо от переходов, то есть инкапсулированно.

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

Переключающее событие (trigger event) – событие, запускающее переход. Это событие может обладать параметрами, которые доступны действию, приписанному переходу. Каждый объект за один раз может обрабатывать только одно событие. Если объект в момент получения события не может обработать его сразу (по причине занятости), он сохраняет его. Переход запускается фактически только тогда, когда объект его обрабатывает, после чего событие «стирается» из памяти объекта (за исключением специального случая отложенных событий, которые сохраняются до тех пор, пока они не запустят переход или пока объект не выйдет из состояния, в котором события являются отложенными). Если два события происходят одновременно, объект все равно будет обрабатывать их по одному. Событие, которое не инициирует переход, просто игнорируется.

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

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

Рис. 19. Внешние переходы

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

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

Виды действий и их краткое описание приведены в таблице № 8.

Таблица № 8

Виды действий

Вид действия Описание Синтаксис
Присваивание (Assignment) Устанавливает значение переменной переменная:=выражение
Вызов (Call) Вызывает операцию в целевом объекте; ожидает окончание выполнения операции; может возвращать значение Имя_операции (аргумент, …, аргумент)
Создание (Create) Создает новый объект new Имя_объекта (аргумент, …, аргумент)
Уничтожение (Destroy) Уничтожает объект Имя_объекта.destroy()
Возврат (Return) Определяет возвращаемые значения для вызывающего объекта Return значение
Отправка (Send) Создаст экземпляр сигнала и посылает его целевому объекту или нескольким объектам Имя_сигнала (аргумент, …, аргумент)
Завершение (Terminate) Самоуничтожение объекта terminate
Неинтерпретируемое (Uninterpreted) Действие, специфическое для языка, например, условный оператор или итерация [специфика языка]

Целевое состояние. После завершения действия становится активным целевое состояние перехода. В момент входа в целевое состояние выполняется действие при входе, которое относится к этому состоянию. В момент выхода выполняется действие при выходе.

Различают состояния простые и композитные. У простого состояния нет внутренней структуры, только набор переходов и, возможно, действия при входе и выходе. Композитным (composite state) называется состояние, в котором имеется несколько последовательных или параллельных подсостояний (таблица № 9).

Таблица № 9

Виды состояний

Вид состояния Описание Нотация
Простое состояние (Simple state) Состояние без внутренней структуры
Параллельное композитное состояние (Concurrent composite state) Состояние, которое разделяется на два (или более) подсостояния, каждое из которых активно все время, когда активно композитное состояние
Последовательное композитное состояние (Sequential composite state) Состояние, которое содержит одно или несколько подсостояннй, причем только одно из этих состояний активно тогда, когда активно композитное состояние
Исходное состояние (Initial state) Псевдосостояние*), которое указывает на начальное состояние при вызове внешнего состояния (enclosing state)
Конечное состояние (Final state) Особое состояние, указывающее на то, что внешнее состояние (enclosing state) завершило свою деятельность
Переходное состояние (Junction state) Псевдосостояние*), соединяющее сегменты перехода в один
Историческое состояние (History state) Псевдосостояние*), которое восстанавливает предыдущее активное состояние в композитном состоянии
Состояние, описываемое ссылкой на вложенный автомат (Submashine reference state) Состояние, описываемое ссылкой на вложенный автомат, который неявно подставляется на то место, откуда производится ссылка
«Заглушка» (Stub state) Псевдосостояние*) в состоянии, описываемом ссылкой на вложенный автомат. Идентифицирует состояние в автомате, на который производится ссылка

Примечание: псевдосостояние – это фиктивное состояние, которое помогает структурировать конечный автомат. К псевдосостояниям относятся исходное состояние, переходное состояние, состояние «заглушки» и историческое состояние. Их назначение – соединение фрагментов перехода. Переход к одному из псевдосостояний подразумевает, что дальнейший переход к следующему состоянию будет сделан автоматически, без помощи события.

Деление композитного состояния на составляющие является его спецификацией[1]. Внешнее состояние разбивается на несколько внутренних подсостояний, каждое из которых наследует его переходы. Активным может быть только одно из подсостояний. Переход во внутреннее состояние или выход из него сопровождается действиями при входе и выходе. Если переход совершается через несколько композитных состояний, он может вызвать несколько действий при входе (сначала самые внешние) и несколько действий при выходе (сначала самые внутренние). Если действие предписано самому переходу, то оно выполняется после выполнения действия при выходе и до действия при входе в новое состояние.

У композитного состояния может также быть исходное состояние. Переход на границу композитного состояния является неявным переходом в исходное состояние. Новый объект начинает существование в наиболее внешнем исходном состоянии. Аналогично, у композитного состояния есть и конечное состояние. Переход в конечное состояние приводит к запуску перехода по завершению (переход без переключающего события) из композитного состояния. Когда объект приходит в самое конечное из всех своих внешних состояний, он разрушается. Исходные и конечные состояния, а также состояния при входе и выходе позволяют определять состояние объекта независимо от переходов.

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

Рис. 20. Конечный автомат

Рис. 21. Конечный автомат с параллельным композитным состоянием

Деление композитного состояния на параллельные независимые под-состояния описывает процесс независимых параллельных вычислений. При входе в параллельное суперсостояние количество нитей управления увеличивается, а при выходе уменьшается. Часто параллельность реализуется в каждом из подсостояний с помощью отдельного объекта. Параллельные подсостояния могут также представлять логический параллелизм внутри одного объекта. На рис. 21 изображено разбиение композитного состояния «Учебный_процесс» на параллельные.

Часто фрагмент одного конечного автомата можно использовать в другом. Автомату можно дать имя и ссылаться на него из других автоматов. В этом случае целевой автомат называется вложенным автоматом, а состояние, которое на него ссылается, — ссылкой на вложенный автомат. Это подразумевает (теоретически) подстановку копии того автомата, на который ссылаются (описывающую его функцию или процедуру), в место, откуда делается ссылка. Вместо вложенного автомата состояние может содержать в себе деятельности. Деятельности (activities) — это продолжительные вычисления или явления, для совершения которых требуется время и которые могут быть прерваны другими событиями. На рис. 22 изображена ссылка на конечный автомат.

Рис. 22. Состояние – ссылка на подавтомат

Переход в состояние, описываемое ссылкой на вложенный автомат, активизирует исходное состояние в целевом вложенном автомате. Однако иногда возникает необходимость перейти в другое состояние этого вложенного автомата. Чтобы перейти в другие вложенные состояния автомата, нужно поместить в состояние со ссылкой одну или несколько «заглушек». «Заглушка» служит для идентификации определенного состояния во вложенном автомате.

 


[1] Спецификация (от лат. species - вид, разновидность и facio - делаю) - определение и перечень особенностей, уточнённая классификация чего-либо.

<== предыдущая лекция | следующая лекция ==>
Лекция 9. Представление в виде конечного автомата как вид динамического представления модели | Тема 6. Облік кредитних операцій
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 263; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.