КАТЕГОРИИ: Архитектура-(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) |
Диаграммы состояний
Диаграмма состояний (Statechart diagram) показывает автомат, фокусируя внимание на потоке управления от состояния к состоянию. Диаграмма состояний изображается в виде графа с вершинами и ребрами. Автомат (State machine) – это описание последовательности состояний, через которые проходит объект на протяжении своего жизненного цикла, реагируя на события, – в том числе описание реакций на эти события. На диаграмме состояний отображают жизненный цикл одного объекта (или класса объектов), начиная с момента его создания и заканчивая разрушением. Поэтому с помощью таких диаграмм удобно моделировать динамику поведения объекта класса. Например, объект Сотрудник может быть нанят, уволен, проходить испытательный срок, находиться в отпуске или в отставке. В каждом из этих состояний объект класса Сотрудник может вести себя по–разному. Диаграмму состояний не требуется создавать для каждого класса. Многие проекты вообще обходятся без них. Если динамика класса важна, то для него полезно создать диаграмму состояний. Такие классы обычно имеют много различных состояний, то есть поведение объекта такого класса существенно, и есть смысл его моделировать. Поведение таких классов, естественно, управляется событиями. Два основных элемента диаграммы состояний – это состояния и переходы между ними. Состояние (State) – это ситуация в жизни объекта, на протяжении которой он удовлетворяет некоторому условию, осуществляет определенную деятельность или ожидает какого–то события. Состоянием называется одно из возможных условий, в которых может находиться объект класса между двумя событиями. На языке UML состояние изображают в виде прямоугольника с закругленными краями (рис. 6.48.).
Рис. 6.48. Состояние
Например, телефон находится в состоянии ожидания, если трубка положена. Имя состояния должно быть уникальным в своем классе. На значках некоторых состояний иногда полезно указать действия (детали), которые ассоциированы с этими состояниями объекта (это данные, связанные с состоянием). Действие (Action) – это атомарное вычисление, которое приводит к смене состояния или возврату значения. Действия могут быть трех типов: входные, выходные и деятельность. Рассмотрим типы действий позднее. Переход (Transition) – это отношение между двумя состояниями, показывающее, что объект, находящийся в первом состоянии, должен выполнить некоторые действия и перейти во второе состояние, как только произойдет определенное событие и будут выполнены заданные условия. Переходом называется перемещение объекта из одного состояния в другое. Переход изображается в виде линии со стрелкой (рис. 6.49.).
Рис. 6.49. Переход
Переходы могут быть рефлексивными (рис. 6.50.), то есть объект переходит в то же состояние, в котором он находится.
Рис. 6.50. Рефлексный переход
На переходах можно записывать события и действия (рис. 6.51.).
Рис. 6.51. Переход с событием и действием
Событие (Event) – это спецификация существенного факта, который происходит во времени и пространстве. В контексте автоматов событие – это стимул, способный вызвать срабатывание перехода. Событие – определяет условие, когда переход может быть выполнен. Событием может быть объект (класс) или операция (чаще всего). Событие можно описать обычной фразой. Например: “Выполнить заказ ”, “Отменить заказ”. Если событием является операция, то у нее могут быть аргументы. Большинство переходов должно иметь события, так как именно они инициируют переход. Тем не менее, бывают и автоматические переходы, которые не имеют событий, то есть объект сам перемещается из одного состояния в другое согласно действиям, записанным внутри значка состояния: деятельность, входные или выходные. После событий в квадратных скобках может быть записано ограждающее условие, которое определяет, когда переход выполняется, а когда нет. Их задавать необязательно. Чаще используются для автоматических переходов (когда на переходе не указано событие), особенно если их несколько из одного состояния. Действие – это непрерываемое поведение, которое выполняется во время перехода. Эти действия не должны выполняться при входе или выходе из состояния (входные и выходные действия показываются внутри состояния). Действием перехода обычно является или вызов метода, или порождение другого объекта (события), или останов процесса. Например, при переходе объекта "Счёт" из открытого в закрытое состояние должно выполняться действие "Сохранить дату закрытия счёта" (рис. 6.52.).
Рис. 6.52. Переход объекта из открытого в закрытое состояние
Такие действия размещают вдоль линии перехода после имени события (ему предшествует косая черта “/”). Рассмотрим более подробно детали (действия), которые объект может выполнять, находясь в конкретном состоянии. Итак, с состоянием можно связать данные (операции) трех типов: деятельность; входное действие; выходное действие. Деятельность (Activity) – это продолжающееся неатомарное вычисление внутри автомата. Деятельностью называется поведение, которое реализует объект, находясь в данном состоянии. Деятельность может быть прервана переходом объекта в другое состояние, а может, выполняться до конца в данном состоянии, но до перехода. Обычно деятельности предшествует слово do (рис. 6.53.). Рис. 6.53. Деятельность
Деятельность может выполняться также в результате получения объектом некоторого сообщения (операции). Входное действие – это поведение, которое всегда выполняется, когда объект переходит в данное состояние (независимо, из какого состояния). Входное действие осуществляется не после того, как объект перешел в состояние, а скорее как часть перехода в данное состояние. И поэтому оно рассматривается как непрерываемое. Ему на состоянии предшествует слово entry (рис. 6.54.).
Рис. 6.54. Входное действие
Выходное действие – это действие подобно входному действию, но осуществляется как составная часть процесса выхода из состояния, независимо от того, куда объект переходит (в какое состояние), то есть выходное действие является частью процесса перехода объекта в другое состояние и является поэтому непрерываемым. Ему предшествует слово exit (рис. 6.55.).
Рис. 6.55. Выходное действие
Поведение объекта во время деятельности, входных и выходных действий может включать в себя отправку сообщения другому объекту. Например, do: ^цель.Операция (Аргументы), где знак "^" указывает, что объект в данном состоянии отправляет сообщение объекту «цель». На диаграмме состояний обычно указывают два специальных состояния объекта – начальное и конечное (Start и Stop). Начальное состояние – это то состояние, в котором объект находится сразу после своего создания. Изображается в виде закрашенного кружочка (рис. 6.56.).
Рис. 6.56. Начальное состояние
От него проводится переход к первоначальному состоянию. Начальное состояние должно быть обязательно на диаграмме, и только одно. Конечное состояние – это то состояние, в котором объект находится непосредственно перед уничтожением. Его изображают в виде значка «бычий глаз» (рис. 6.57.).
Рис. 6.57. Конечное состояние
Конечное состояние не является обязательным, и их может быть сколько угодно. Для упорядочивания состояний на диаграмме их можно вкладывать друг друга. Вложенные состояния называются подсостояниями (Substates), а те, в которые они вложены, – суперсостояниями (Superstates). Состояния обычно вкладываются (группируются), если у них имеются идентичные переходы. Тогда есть смысл сгруппировать их вместе в суперсостояние, которое будет поддерживать одинаковые переходы вложенных состояний. На диаграмме состояний будет меньше переходов, то есть говорят «навести порядок» на диаграмме. От начального состояния можно провести переход к любому подсостоянию, и от любого подсостояния или суперсостояния можно добавить переход в конечное состояние. Может быть несколько уровней вложенности состояний.
Дата добавления: 2014-01-07; Просмотров: 2301; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |