![]() |
Звоните! (926)274-88-54 Бесплатная доставка. Бесплатная сборка. |
Ассортимент тканей График работы: Ежедневно. С 8-00 до 20-00. Почта: soft_hous@mail.ru |
![]() ![]() ![]() |
Читальный зал --> Диаграммы параллельных состояний жевым условием выполняется только в том случае, если данное сторожевое условие принимает значение истина . Из конкретного состояния в данный момент времени может быть осуществлен только один переход, таким образом, сторожевые условия должны быть взаимно исключающими для любого события. На рис. 8.1 мы имеем дело с тремя условиями: 1. Если проверены не все позиции, входящие в заказ, мы получаем следующую позицию и возвращаемся в состояние Проверка. 2. Если проверены все позиции и все они имеются на складе, то мы переходим в состояние Отправка. 3. Если проверены все позиции, но не все из них имеются на складе, то мы переходим в состояние Ожидание. Сначала рассмотрим состояние Ожидание. В этом состоянии не существует деятельностей, поэтому данный заказ находится в состоянии ожидания, пока не наступит некоторое событие. Оба перехода из состояния Ожидание помечены событием Позиция получена . Это означает, что соответствующий заказ находится в состоянии Ожидание до тех пор, пока он не обнаружит наступление данного события. В этот момент оцениваются сторожевые условия данных переходов, и выполняется соответствующий переход либо в состояние Отправка, либо обратно в состояние Ожидание. В состоянии Отправка имеется деятельность, которая инициирует доставку. Из этого состояния имеется единственный безусловный переход, который происходит в результате наступления события Отправлен . Это означает, что рассматриваемый переход обязательно произойдет, если наступит данное событие. При этом следует заметить, что этот переход не произойдет, даже если завершится деятельность; наоборот, когда деятельность инициировать доставку завершится, данный заказ останется в состоянии Отправка, пока не наступит событие Отправлен . Наконец, рассмотрим переход с именем отмена . Мы должны располагать возможностью отменить заказ в любой момент, пока заказ не доставлен клиенту. Это можно сделать, изобразив отдельные переходы из каждого состояния: Проверка, Ожидание и Отправка. Удобный альтернативный вариант - определить некоторое суперсостояние для трех перечисленных состояний, после чего нарисовать единственный выходящий из него переход. В этом случае подсостояния просто наследуют любые переходы суперсостояния. Оба подхода изображены на рис. 8.2 и 8.3. Они описывают одно и то же поведение системы. [Не все позиции проверены] /получить следующую позицию Проверка [все позиции проверены && все позиции доступны] / Отправка выполнить проверку/ проверить позицию V заказа у выполнить отправку/ инициировать ч доставку J [Все позиции проверены && некоторые позиции отсутствуют на складе] Позиция получена [некоторые позиции отсутствуют на складе] ![]() отмена Отмена Доставка Рис. 8.2. Диаграмма состояний без суперсостояний Рис. 8.2 выглядит довольно перегруженным, хотя на нем изображено всего три дублирующих перехода. На рис. 8.3 картина в целом выглядит гораздо яснее, и если впоследствии потребуется внести какие-либо изменения, то будет значительно труднее упустить из вида событие отмена . В данных примерах я изобразил деятельность внутри состояния в виде текста выполнить/деятельность*. Внутри состояния также можно указать и другую информацию. Если состояние реагирует на событие, связанное с действием, которое не влечет за собой никакой переход, этот факт можно изобразить, поместив текст вида ИмяСобытия / ИмяДействия* в прямоугольник состояния. Помимо событий с именами существуют еще два других типа событий: Событие может быть инициировано после завершения определенного периода времени. Такое событие можно пометить ключевым словом после. Например, можно записать после (20 минут). Имя суперсостояния Активное [Не все позиции проверены] /получить следующую позицию Проверка [Все позиции проверены && все позиции доступны] / ![]() Отправка выполнить проверку/ проверить позицию выполнить отправку/ инициировать ч доставку у [Все позиции проверены && некоторые позиции отсутствуют на складе] Позиция получена [некоторые позиции отсутствуют на складе] Ожидание отмена Отмена Заказа Доставка Рис. 8.3. Диаграмма состояний с суперсостояниями. Событие может быть инициировано в результате выполнения того или иного логического условия. Такое событие можно пометить ключевым словом если. Например, можно записать если (температура >100 градусов ). Существуют также два особых события: вход и выход. Любое действие, связанное с событием входа, выполняется в момент перехода объекта в данное состояние. Действие, ассоциированное с событием выхода, выполняется в том случае, когда объект покидает данное состояние в результате осуществления некоторого перехода. Если имеется так называемый рефлексивный переход, возвращающий объект обратно в то же самое состояние и связанный с каким-либо действием, то сначала должно выполниться действие выхода, затем действие данного перехода и, наконец, действие входа. Если с данным состоянием ассоциирована некоторая деятельность, то она начнет выполняться сразу после действия входа.
ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку. Звоните! Ежедневно! (926)274-88-54 Продажа и изготовление мебели. Копирование контента сайта запрещено. Авторские права защищаются адвокатской коллегией г. Москвы. |