- •«Диаграммы состояний»
- •1. Что такое диаграмма состояний
- •Набор символов
- •Дополнительные элементы в изображении состояния
- •Дополнительные обозначения для переходов: события и действия
- •Дополнительные обозначения для переходов: условия переходов
- •2. Подчиненные состояния
- •Последовательные подчиненные состояния
- •3. История состояний
- •Параллельные подчиненные состояния
- •4. Сообщения и сигналы
- •5. Зачем нужны диаграммы состояний
- •Дополнение к общей картине
- •6. Резюме
- •Вопросы и ответы
- •Задание
4. Сообщения и сигналы
В рассматриваемом примере переключающим событием, вызывающим переход из состояния Отображение заставки в состояние Работа, может быть нажатие клавиши, перемещение указателя мыши или щелчок на кнопке. Любое из этих событий в конечном счете представляет собой сообщение пользователя GUI-интерфейсу. Это важное понятие, поскольку объекты взаимодействуют друг с другом путем передачи сообщений. В нашем случае переключающее событие является сообщением от одного объекта (пользователь) другому (GUI).
Сообщение, обеспечивающее переход на диаграмме состоянии объекта-получателя, называется сигналом. В рамках объектно-ориентированного подхода отправка сигнала представляется как создание экземпляра класса сигнала и передача его объекту-получателю. Сигнал имеет свойства, представляемые в виде атрибутов. Поскольку сигнал можно рассматривать как класс, то можно создать диаграмму классов, отражающую иерархию наследования сигналов.
Передачу сигналов и их иерархию удобно рассмотреть на примере пульта дистанционного управления телевизором. Этот пример позволяет также вспомнить о стереотипах, используемых в UML для расширения возможностей языка. Поскольку сигнал в UML можно представить как класс, то на диаграмме классов для каждого сигнала используется стереотип «сигнал». На рис. 9 представлена иерархия сигналов для модели пульта дистанционного управления телевизором. Возможно, модель вашего пульта несколько отличается от приведенной. Если это так, попробуйте смоделировать сигналы вашего пульта.
Рис. 9. Иерархия сигналов для пульта дистанционного управления телевизором
Между прочим, обозначение класса «сигнал» можно использовать для выделения события, переводящего объект из одного состояния в другое, как показано на рис. 10.
Рис. 10. Использование стереотипа класса «сигнал» для выделения события, вызывающего переход из состояния
5. Зачем нужны диаграммы состояний
На диаграмме состояний отображаются все переходы между состояниями одного объекта системы. Если информация слишком детализирована, то такая диаграмма скоро может стать очень сложной. Нужно ли это?
Действительно, нужно. Диаграммы состояния необходимы, так как они используются аналитиками, проектировщиками и разработчиками для исследования поведения объектов в системе. Диаграмма классов и соответствующая диаграмма объектов отображают только статическое состояние системы. На них представлены иерархии и ассоциации, и из них можно узнать о возможном перечне действий системы, но ничего нельзя узнать о деталях динамического поведения.
Однако разработчики должны понимать поведение объектов, поскольку их задачей является реализация этого поведения в программном обеспечении. Просто разработать объект недостаточно: специалисты должны добиваться того, чтобы объект выполнял свои функции. Диаграммы состояний дают полную информацию о желаемом поведении. Ясное представление о поведении объекта повышает вероятность того, что группа разработчиков создаст систему, удовлетворяющую выдвинутым требованиям.
