Uploaded by Nierra Evershine

1278732

advertisement
Лабораторная работа № 7
(продолжение)
Тема: Создание диаграммы состояний
Цель: Создание диаграммы состояний
Основные понятия диаграммы
Диаграмма
состояний
(Statechart
diagram)
показывает автомат,
фокусируя внимание
на
потоке
управления
от состояния
к
состоянию. Автомат
(State
machine) -это описание
последовательности состояний, через которые проходит объект на протяжении
своего
жизненного цикла,реагируя на события, - в том числе описание реакций на этисобытия.
Состояние (State) - это ситуация в жизни объекта, на протяжении которой он удовлетворяет
некоторому условию,осуществляет определенную деятельность или ожидает какого- то события.
Событие
(Event) это
спецификация существенного факта,
который происходит во времени ипространстве.
В контексте автоматов событие - это стимул, способный вызвать срабатывание перехода. Переход
(Transition) - это отношение между двумя состояниями, показывающее, что объект,
находящийся в первом состоянии, должен выполнить некоторые действия и перейти во второе состояние,
как только произойдет определенное событие и будут выполнены заданные
условия.
Деятельность
(Activity)
-это продолжающееся неатомарное вычисление
внутри автомата. Действие (Action) - это атомарное вычисление, которое приводит к
смене состояния или возврату значения. Диаграмма состояний изображается в виде графа с вершинами и
ребрами.
Основными элементами диаграммы состояний являются
«Состояние» и «Переход». Диаграмма состояний имеет схожую семантику с диаграммой
деятельности, только деятельность здесь заменена состоянием, переходы символизируют действия. Таким
образом, если для диаграммы деятельности отличие между понятиями «Деятельность» и
«Действие»
заключается
в
возможности
дальнейшей
декомпозиции,
то на диаграмме состояний
деятельность символизирует
состояние, в
которомобъект
находится
продолжительное количество времени, в то время как действиемоментально.
Диаграмма деятельности полезна для описания алгоритма действий, но она не дает представления
о поведении определенного объекта в рамках отдельного варианта использования или системы в целом, что
необходимо при объектно-ориентированном
программировании
На сегодняшний день при проектировании сложной Системы принято делить ее на части, каждую из которых
затем рассматривать
отдельно. Таким образом,
при
объектной декомпозиции Система
разбивается на объекты или компоненты, которые взаимодействуют друг с другом, обмениваясь
сообщениями. Сообщения
описывают или представляют собой некоторые события. Получение
объектом сообщения активизирует его и побуждает выполнять предписанные его программным кодом
действия.
При данном подходе Система становится событийно управляемой, поэтому разработчикам зачастую важно
знать, как должен реагировать тот или иной объект на определенные события. Инициаторами событий
могут быть как объекты самой Системы, так и её внешнее окружение.
Описать поведение отдельно взятого объекта помогает диаграмма
состояний.
Также зачастую диаграмма состояний используется аналитиками для описания последовательности переходов
объекта
из
одного
состояния
в
другое.
Диаграмма состояний покажет нам все возможные состояния, в которых может находиться объект, а
также процесс смены состояний в результате внешнего влияния.
Переход может быть инициирован событием, которое такжеотражается на диаграмме состояний.
Состояние
дополнительно
может содержать только
имя
или имя
и
список
внутренних действий. Список внутренних действий содержит
перечень действий илидеятельностей, которые выполняются во время нахождения
объекта в данном состоянии. Данный список фиксированный. Список основных действий включает
следующие значения: entry - действие, которое выполняется в момент входа в данноесостояние (входное
действие);
exit - действие, которое выполняется в момент выхода из
данного состояния (выходное действие);
do - выполняющаяся деятельность ("do activity") в течениевсего времени, пока объект находится в
данном состоянии defer - событие, обработка которого предписывается в другомсостоянии, но после того,
как все операции в текущем будут завершены.
Факт смены одного состояния другим изображается с
помощью перехода. Переход осуществляется при наступлении
некоторого события: окончания выполнения деятельности (do
activity), получении объектом сообщения или приемом сигнала
(подробнее события будут рассмотрены позднее). Переход может
быть тригерным и нетригерным. Если переход срабатывает, когда
все операции исходного состояния завершены, он называется
нетригерным или переходом по завершении. Если переход
инициируется каким- либо событием, он считается тригерным.
Для тригерного перехода характерно наличие имени, которое может
быть записано в следующем формате:
<имя события>'('<список параметров, разделенных
запятыми>')'['<сторожевое условие>']' <выражение действия>.
Обязательным параметром является только имя события.
В качестве события могут выступать сигналы, вызовы, окончание
фиксированных промежутков времени или моменты окончания
выполнения определенных действий. После имени события могут
следовать круглые скобки для явного задания параметров
соответствующего события-триггера (например, пользователь
инициирующий действие).
При использовании диаграммы состояний важно следовать
следующим правилам:
Диаграмма состояний должна создаваться только для объектов, обладающих реактивным поведением. Не следует
делать диаграмму автоматов для всех классов или объектов, достаточно выбрать только основные классы или
объекты, обладающие сложным поведением.
Диаграмма состояний должна быть сосредоточена на описании только одного аспекта поведения объекта.
Следует создавать диаграмму автомата, моделирующую поведение только одного объекта. Если необходимо
показать поведение нескольких, взаимосвязанных объектов, допустимо создавать для них диаграмму состояний в
рамках определенного варианта использования (диаграмма состояний для варианта использования).
На диаграмме состояний целесообразно использовать только те элементы, которые существенны для понимания
описываемого аспекта.
Этапы выполнения упражнения
Создание диаграммы
Найдите в браузере класс Product.
Щелкните на классе правой кнопкой мыши и в открывшемся менюукажите пункт New Statechart Diagram (
Создать диаграмму Состояний).
Добавление исходного и конечного состояний
Нажмите кнопку Start State (Начальное состояние) панели
инструментов.
Поместите это состояние на диаграмму.
Нажмите кнопку End State (Конечное состояние) панелиинструментов.
Поместите это состояние на диаграмму.
Добавление состояний
На панели инструментов нажмите кнопку State (Состояние).Поместите состояние на диаграмму.
Назовите состояние Ordered (Заказан).
На панели инструментов нажмите кнопку State( Состояние). Поместите состояние на диаграмму.
Назовите состояние Inventoried (На складе).
На панели инструментов нажмите кнопку State (Состояние).
Назовите состояние Out of Stock (Нет в наличии).
На панели инструментов нажмите кнопку State (Состояние). Назовите состояник Selected for Purchase
(Выбран для продажи).На панели инструментов нажмите кнопку Sate (Состояник).
Поместите состояние на диаграмму.
Назовите состояние Purchased ( Продан).
Добавление переходов
Нажмите кнопку Transition (Переход) панели инструментов.Щелкните мыщью на начальном состояний.
Проведите линию перехода к состаянию Ordered.
Повторив шаги 1-3, создайте следующие переходы:
От состояния Ordered к состаянию Out of stockОт состояния Ordered к
состаянию Inventoried
От состояния Inventoried к состаянию Selected for PurchaseОт состояния Selected
Purchase к состаянию Inventoried
От состояния Selected for Purchase к состаянию Purchased
От состояния Purchased к состаянию End State От состояния Out of
Stock к состаянию End StateОт состояния Inventoried к состаянию End
State
Описание переходов
Дважды щелкнув мыщью на переходе от Ordered к состаянию Out of Stock,откройте окно спецификаций перехода
.
Перейдите на вкладку Detail.
В поле Guard Condition (Ограждающие условие) введите backordered
(отмена заказа).
Щелкните Ok для закрытия окна спецификаций.
Повторите шаги 1-4 для добовления ограждающих условий следующим переходам:
* [ received- получен]
между Ordered иI Іnventoried.
* [ in shopping cart- в покупательской корзине] между Inventoried и Selected for Purchase
* [paid- оплачен] между Selected for Purchase и Purchased.
Литература и ссылки на
интернет ресурсы:
1. [Боггс-2000] Боггс У., Боггс М. UML и Rational Rose: Пер. с англ. –
М.: Лори, 2000.
2.[Буч-1999] Буч Г. Объектно-ориентированный анализ и проектирование с примерами
приложений на С++. 2-е изд.: Пер. с англ. –М.: Издательство Бином, СПб.: Невский диалект, 1999.
3. [Буч-2000] Буч Г., Рамбо Дж., Джекобсон А. Язык UML. Руководство
пользователя: Пер. с англ. – М.: ДМК, 2000.
4. [Вендров-1998] Вендров А. М. CASE-технологии. Современные методы и
средства проектирования информационных систем. – М.: Финансы и статистика, 1998.
Download