ТОП 10:

Добавление деталей к описанию состояния



Находясь в конкретном состоянии, объект может выполнять определенные действия. Например, он может генерировать отчет, осуществлять некоторые вычисления или посылать событие другому объ­екту. В Rose информация такого типа добавляется к модели посредством окна спецификации состоя­ния.

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

Рассмотрим каждый из них в контексте примера. На рис. показана диаграмма Состояний для класса Account системы ATM

Деятельность

Деятельностью (activity) называется поведение, реализуемое объектом, когда он находится в данном со­стоянии. Например, когда счет находится в состоянии "Закрыт”, происходит возврат кредитной кар­точки пользователю. Деятельность — это прерываемое поведение. Оно может выполняться до своего завершения, если объект находится в данном состоянии, или может быть прервано переходом объек­та в другое состояние. Деятельность изображают внутри самого состояния, ей должны предшество­вать слово do (делать) и двоеточие:

Входное действие

Входным действием (entry action) называется поведение, которое выполняется, когда объект переходит в данное состояние.

Выходное действие

Выходное действие (exit action) подобно входному. Однако оно осуществляется как составная часть про­цесса выхода из данного состояния. Так, при выходе объекта Account из состояния "Превышен счет", независимо от того, куда он переходит, выполняется действие "Разморозить счет". Оно является ча­стью процесса перехода. Как и входное, выходное действие является непрерываемым. Выходное действие изображают внутри состояния, ему предшествуют слово exit (выход) и двоеточие.

Добавление переходов

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

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

Детальное описание перехода

У перехода существует несколько спецификаций: события, аргументы, ограждающие условия, дейст­вия и посылаемые события. Рассмотрим эти параметры в контексте примера ATM. На рис. 8.2 показа­на диаграмма Состояний для класса Account.

Событие

Событие (event) — это то, что вызывает переход из одного состояния в другое. В нашем примере собы­тие "Клиент требует закрыть" вызывает переход счета из открытого состояния в закрытое. Событие размещают на диаграмме вдоль линии перехода.

Для отображения события на диаграмме можно использовать как имя операции, так и обычную фразу. В нашем примере события описаны обычными фразами. Если вы хотите использовать опера­ции, то событие "Клиент требует закрыть" можно было бы назвать RequestClosureQ.

У событий могут быть аргументы. Так; событие "Сделать вклад", вызывающее переход счета из со­стояния ^'Превышен счет" в состояние "Открыт", может иметь аргумент Amount (Количество), описы­вающий сумму депозита. Rose позволяет добавлять аргументы к событиям.

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

Ограждающее условие

Ограждающие условия (guard conditions) определяют, когда переход может быть выполнен, а когда нет. В нашем примере событие "Сделать вклад" переведет счет из состояния "Превышение счета" в состоя­ние "Открыт", но только если баланс больше нуля. В противном случае переход не осуществится.

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

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

Действие

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

Например, при переходе счета из открытого в закрытое состояние выполняется действие "Сохра­нить дату закрытия счета”. Это непрерываемое поведение осуществляется только во время перехода из состояния "Открыт" в состояние "Закрыт".

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

Событие или действие может быть поведением внутри объекта, а может представлять собой сооб­щение, посылаемое другому объекту. Если событие или действие посылается другому объекту, перед ним на диаграмме помещают знак "^".

Для добавления события на диаграмму:

· Дважды щелкнув мышью на переходе, откройте окно его спецификации.

· Перейдите на вкладку General (Общие).

· Введите событие в поле Event (Событие).

Для добавления аргументов к событию:

· Дважды щелкнув мышью на переходе, откройте окно его спецификации.

· Перейдите на вкладку General (Общие).

· Введите аргументы в поле Arguments (Аргументы).

Если нужно задать ограждающее условие:

· Дважды щелкнув мышью на переходе, откройте окно его спецификации.

· Перейдите на вкладку Detail (Подробно).

· Введите ограждающее условие в поле Condition (Условие).

Для добавления действия:

· Дважды щелкнув мышью на переходе, откройте окно его спецификации.

· Перейдите на вкладку Detail (Подробно).

· Введите действие в поле Action (Действие).

Отправить событие можно следующим образом:

· Дважды щелкнув мышью на переходе, откройте окно его спецификации.

· Перейдите на вкладку Detail (Подробно).

· Введите событие в поле Send Event (Отправляемое событие).

· Введите аргументы в поле Send Arguments (Отправляемые аргументы).

· Укажите цель в поле Send Target (Цель события).

Задание специальных состояний

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

Начальное состояние

Начальным (start) называется состояние, в котором объект находится сразу после своего создания. В нашем примере при создании счет имеет состояние "Открыт". На диаграмме его изображают в виде закрашенного кружка. От него к первоначальному состоянию проводится переход.

Начальное состояние обязательно — читатель должен знать, с чего начинается объект. На диаграмме может быть только одно начальное состояние.

Конечное состояние

Конечным (stop) называется состояние, в котором объект находится непосредственно перед уничтоже­нием. Его изображают в виде закрашенного кружка с незакрашенным ободком ("бычий глаз"). Конеч­ные состояния не являются обязательными, их может быть сколько угодно.

Для указания начального состояния:

· Нажмите кнопку Start State (Начальное состояние) панели инструментов.

· Щелкните мышью на диаграмме Состояний в том месте, куда нужно поместить начальное состояние.

Для указания конечного состояния:

· Нажмите кнопку End State (Конечное состояние) панели инструментов.

· Щелкните мышью на диаграмме Состояний в том месте, куда нужно поместить конечное состояние.







Последнее изменение этой страницы: 2016-04-18; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.232.51.69 (0.005 с.)