Диаграмму состояний не нужно создавать для каждого класса в системе, только для классов с «особенным» динамическим поведением. Для определения динамических объектов в системе, то есть объектов, отсылающих и получающих большое количество сообщений, могут использоваться диаграммы взаимодействий. Диаграмма состояний также полезна для изучения поведения класса-агрегата и управляющего класса.
Следует внимательно подойти к вопросам анализа и сосредоточиться на том,
1. Щелкните правой кнопкой мыши по классу в списке браузера.
2. В появившемся контекстно-зависимом меню выберите команду New => Statechart Diagram
(Создать => Диаграмма состояний). В список браузера будет добавлена диаграмма New Diagram.3. Введите ее название.
4. Чтобы открыть диаграмму, щелкните по значку «+» слева от имени подкласса в окне браузера, потом по значку «+» слева от пункта State/Activity Model
(Модель состояний и действий), а затем дважды по диаграмме состояний.Диаграмма состояний в списке браузера для класса учебный курс (Course Offering) показана на рис. 9.1.
В языке UML состояние изображается в виде прямоугольника с закругленными углами — см. рис. 9.2.
Диаграмма состояний включает все сообщения, которые объект получает и отправляет. Сценарий — это одиночный проход по диаграмме состояний. Интервал между двумя сообщениями, отправляемыми объектом, обычно представляет состояние. Таким образом, для определения состояний
объекта нужно изучить диаграмму последовательности действий (взгляните на интервалы между линиями сообщений, получаемых объектом). Если для каждой функции в системе регистрации учебных курсов были созданы диаграммы последовательности действий, то с помощью них можно обнаружить, что объекты класса учебный курс (CourseOffering) могут находиться в одном из следующих состояний: инициализация (создан до регистрации, но студенты не прикреплены), открыт (доступен для записи студентов), закрыт (на курс записано максимальное число студентов), отменен (больше не читается).
Последовательность создания состояний в программе Rational Rose:
1. Щелкните по кнопке State
(Состояние) на панели инструментов.2. Щелкните по диаграмме, чтобы поместить на нее новое состояние.
3. Введите его название.
Состояния класса учебный курс показаны на рис. 9.3.
Есть два способа выхода из состояния — автоматический и неавтоматический. Автоматическая смена состояния происходит, когда действие исходного состояния будет завершено — с переходом не связано каких-либо событий. Неавтоматический переход между состояниями вызывается определенным событием (от другого объекта или из внешней среды). Считается, что оба типа переходов выполняются за нулевое время и не могут быть прерваны. Переход между состояниями изображается в виде стрелки, направленной от исходного состояния к последующему.
Для создания переходов между состояниями в программе Rational Rose:
1. Щелкните по кнопке State Transition
(Переход) на панели инструментов.2. Щелкните по исходному состоянию диаграммы.
3. Проведите линию перехода к последующему состоянию.
4. Если требуется, введите название нового перехода.
Переходы между состояниями показаны на рис. 9.4.