- •Лабораторная работа №2. Создание диаграмм размещения аппаратной части системы (Deployment Diagram), заготовок классов и разработка диаграмм состояний объектов (Statechart Diagram)
- •Основные сведения
- •1. Назначение диаграмм размещения аппаратной части системы
- •2. Создание диаграммы размещения аппаратной части системы
- •3. Назначение диаграмм состояний объектов
- •4. Создание диаграмм состояний объектов (Statechart Diagram)
- •Задание
- •2. Создать заготовки классов для модели системы тестирования программных реализаций базовых алгоритмов.
- •3. Создать диаграмму состояний координатора.
- •5. Разработать заготовки классов для модели системы, разрабатываемой по индивидуальному заданию.
- •6. Разработать диаграммы состояний для объектов системы, разрабатываемой по индивидуальному заданию.
- •7. Составить отчет, в котором привести все разработанные диаграммы, а также описание построения и содержания этих диаграмм. В выводах показать место диаграмм состояний в проектах сложных систем.
3. Назначение диаграмм состояний объектов
Комплект диаграмм состояний представляет собой модель поведения объектов, которая позволяет описать основные состояния системы, возможные переходы в эти состояния в процессе функционирования системы, а также некоторые взаимодействия между объектами, возникающие при этих переходах. Такая модель отвечает основному назначению объектно-ориентированного программирования – создавать объекты, наделенные определенным поведением, которые будут адекватно представлять процессы предметной области. Диаграммы состояний рекомендуется использовать для описания поведения некоторого объекта в нескольких различных вариантах использования системы. Другим аргументом в пользу применения диаграмм состояний является сложное поведение объекта некоторого класса. Считается, что интерфейсы и управляющие объекты обладают именно таким поведением, которое целесообразно представлять с помощью диаграмм состояний. Диаграммы состояний обычно не применяются для описания ряда взаимодействующих объектов, так как для этих целей используются специальные диаграммы взаимодействий.
4. Создание диаграмм состояний объектов (Statechart Diagram)
Данный тип диаграмм позволяет четко представить всё поведение будущего программного объекта в виде графических значков состояний.
Создание заготовок классов
Перед тем как приступить к созданию диаграмм состояний объектов, необходимо добавить в модель классы, к которым моделируемые объекты будут принадлежать. На начальных этапах проектирования достаточно создать неполные описания классов (заготовки классов), которые в дальнейшем будут преобразованы в полные классы, составляющие диаграмму классов.
Для добавления новой заготовки класса в модель системы выполнить следующие действия:
переместить указатель мыши в область просмотра модели,
щелкнуть правой клавишей мыши на строке Logical View,
выполнить команду “New – Class”. Далее следует заменить стандартное название создаваемого класса “NewClass” на соответствующее имя нового класса.
Указанные выше действия повторяются для создания столько раз, сколько заготовок классов надо создать.
Создание диаграмм состояний
Для создания диаграммы состояний объекта некоторого класса достаточно выполнить следующие действия:
подвести указатель мыши к значку соответствующего класса в области просмотра модели и щёлкнуть правой кнопкой мыши,
в открывшемся контекстном меню выбрать команду “New – Statechart Diagram”,
заменить стандартное имя создаваемой диаграммы “NewDiagram” на имя новой диаграммы состояний,
в области просмотра модели подвести указатель мыши к значку или к имени новой диаграммы и дважды щёлкнуть левой кнопкой мыши для того, чтобы в рабочей области открылось окно новой диаграммы состояний “Statechart Diagram: <Имя класса>/<Имя диаграммы>”.
В открывшемся окне “Statechart Diagram: <Имя класса>/<Имя диаграммы>” новая диаграмма состояний объекта строится с помощью инструментов: “начальное состояние” (Start State), “состояние” (State), ”конечное состояние” (End State), “переход в новое состояние” (State Transition), “рефлексивный переход” (Transition To Self).
Инструмент “состояние” служит для помещения в диаграмму одноимённого значка, который позволяет отразить состояние или ситуацию в течение жизни объекта, которая отвечает некоторому положению объекта или ожиданию им некоторого события. Каждое состояние представляет собой совокупную историю поведения объекта. Имя состояния объекта должно быть уникально для данного класса объектов, так как состояния с одинаковыми именами считаются представлением одних и тех же состояний. В текущем значке состояние могут быть отражены действия по входу, выходу из состояния, действия не связанные с событиями или реакция на события. Подробнее отображение этих действий рассматривается далее.
Инструмент “начальное состояние” позволяет создать значок начала работы. Для диаграммы состояний объекта он обозначает событие, которое переводит объект в первое состояние на диаграмме. Все диаграммы состояний начинаются со значка начальное состояние и должны заканчиваться значком конечное состояние. При этом значок начала работы может быть только один, а значков окончания может быть сколько угодно. За этим Rational Rose следит самостоятельно.
Инструмент “конечное состояние” позволяет создать значок окончания работы. Направление перехода может быть установлено только в данный значок, однако, никаких ограничений на количество переходов в конечное состояние, а также на количество таких элементов на диаграмме, не налагается.
Инструмент “переход в новое состояние” позволяет создать значок перехода, который означает, что объект переходит из одного состояния в другое в случае наступления определенного события или по изменению определенных условий. Пользователь может указать несколько переходов из одного состояния в другое, в случае если каждый такой переход осуществляется при наступлении разных событий или при соблюдении разных условий.
Инструмент “рефлексивный переход” позволяет создать значок перехода в то же состояние, из которого осуществляется переход. Данный переход похож на переход в новое состояние, однако, он не осуществляет переход в другое состояние при наступлении некоторого события. Таким образом, при наступлении события оно обрабатывается, и после обработки объект возвращается в то состояние, в котором он находился до наступления события.
Построение диаграммы состояний начинается с создания точки начала работы. Значок точки начала работы создаётся ее при помощи инструмента “начальное состояние”. Затем к значку “начальное состояние” добавляется значок “состояние”, которое обычно является состоянием ожидания, и эти значки соединяются связью “переход в новое состояние”. Определения события, при котором происходит переход в новое состояние, и описание нового состояния, включая определение действий выполняемых в этом состоянии, реализуется с помощью контекстных меню. Далее указанные действия повторяются до тех пор, пока не будут построены все возможные состояния моделируемого объекта и связи между этими состояниями.
Определение свойств состояния объекта
Определение свойств состояния объекта и операций, выполняемых объектом в этом состоянии, реализуется с использованием диалогового окна “State Specification for Ne …”. Для любого значка “состояние” это окно может быть открыто с помощью команды контекстного меню “Open Specification …”. В этом окне на главной вкладке в поле Owner отображается имя класса, к которому принадлежит данный объект.
Вкладка операций (Action) предназначается для определения операций, выполняемых объектом в моделируемом состоянии. Описания операций размещаются в рабочей области этой вкладки. Они состоят из типа операции и выражения, которое раскрывает содержание операции.
Для определения операции следует выполнить действия:
Вывести указатель мыши в рабочее поле вкладки операций и щелкнуть правой кнопкой мыши.
В контекстном меню выбрать команду Insert, после чего в рабочем поле появится код новой операции “Entry/”.
Подвести указатель к коду “Entry/”, щелкнуть правой кнопкой мыши и выбрать в контекстном меню команду “Specification”. При этом на экране появляется диалоговое окно, обеспечивающее детальное описание операций “Action Specification for U …”.
В поле When установить, выбрав из списка, один из кодов, определяющих момент выполнения операции (описание этих кодов приводится ниже).
В поле Type установить, также выбрав из списка, тип операции: действие (Action) или сообщение (SendEvent).
Нажать кнопку OK в окне State Specification for Ne …” и такую же кнопку в окне “Action Specification for U …”.
В поле Whenможно указать код одного из четырех режимов:
• Onentry– определяет, что указанное действие выполняется при входе в состояние до выполнения остальных действий.
• Onexit– определяет, что действие выполняется перед самым выходом из данного состояния.
• Do – определяет действия, производимые в течение всего времени пребывания объекта в данном состоянии. Если таких действий набирается несколько, то почти наверняка их можно перенести в отдельные состояния.
• On Event – определяет действия, которые выполняются в ответ на определенные события, обрабатываемые в текущем состоянии.
При выборе кода On Event открывается возможность заполнить поля: “события” (Event), “параметры” (Arguments) и “условия” (Condition). Содержимое поля “условия”, дополнительно определяет когда это событие обрабатывается, то есть может случиться так, что событие произошло, а условие его обработки не выполняется. Этот пункт удобно использовать для описания события, которое не приводит к переходу в другие состояния, что отображается значком “Transition To Self”.
Разница между типами операции, которые определяются содержимым поля Type, заключается в том, что действие (Action) выполняется классом, для которого создается диаграмма состояния, то есть для осуществления операции вызывается метод этого класса, а сообщение (SendEvent) пересылается объекту другого класса, метод которого вызывается для обработки этого сообщения. Объект, которому направляется сообщение, указывается в строке “Send target”, имя метода, вызываемого для обработки сообщения, указывается в строке “Name”, а аргументы –в строке “Send arguments”.
При изменении рассмотренных параметров изменяется и надпись на значке состояния. Это позволяет, не открывая окно свойств состояния, выяснить, какие действия и в каких режимах выполняются объектом в данном состоянии.
Определение свойств переходов
Определение свойств переходов реализуется с использованием диалогового окна “State Transition Specification …” . Для любого значка “переход” это окно может быть открыто с помощью команды контекстного меню “Open Specification …”. В этом окне на главной вкладке в поле Event отображается имя события, при наступлении которого осуществляется данный переход .
Вкладка детального описания перехода содержит поля, содержимое которых определяет следующие параметры перехода:
состояния, между которыми осуществляется переход,
условие, при выполнении которого реализуется некоторое действие,
действие, которое выполняется при указанном выше условии,
объект, метод которого используется для обработки события,
аргументы метода, обрабатывающего событие.
Дополнительные возможности диаграммы состояний
Пакет Rational Rose предоставляет возможность создания вложенных диаграмм состояния, что удобно для большей детализации каждого состояния. Если общая картина теряется при большом количестве состояний, то можно скрыть ненужные в данный момент вложенные состояния. Для этого нужно выделить состояние, а затем выбрать в горизонтальном меню выбрать режим View и в открывшемся подменю сделать неактивным режим “Show Nested Elements”.
Включение режима “States History” позволяет показать, что когда система повторно попадает в указанное состояние, то она должна начинать свое движение не с первого вложенного состояния, а сразу перейти в последнее вложенное состояние. То есть при первом входе в некоторое состояние производятся однократные действия, которые при следующем входе в это состояние выполнять уже не нужно. Установленный режим “States History” отображается на диаграмме буквой “Н” в кружке.
