С чего начинать построение диаграмм состояний?
Процесс создания диаграмм состояний напоминает создание диаграммы классов или прецедентов. На диаграмме классов сначала перечисляются все классы, а затем определяются ассоциации. На диаграмме состояний сначала отображаются все состояния объекта, а затем строятся переходы. Анализируя переходы, можно добавить на диаграмму переключающие события и происходящие действия.
Нужно ли каждую диаграмму состояний завершать конечным состоянием ("глазком")?
Нет. Объект, который никогда "не выключается", не имеет такого состояния.
Существуют ли какие-нибудь рекомендации по построению диаграммы состояний?
Старайтесь располагать состояния и переходы таким образом, чтобы минимизировать пересечение линий. Одной из задач такой диаграммы (и любой другой) является прояснение и структурирование известной информации. Если разработчики не в состоянии понять построенную модель, они не будут ее использовать, и все усилия окажутся напрасными.
Задание
1. Предположим, вы проектируете тостер. Создайте диаграмму состояний, которая отслеживает состояния хлеба в тостере. Используйте необходимые переключающие события, действия и условия переходов.
2. В Windows пользователи могут передавать сигналы графическому пользовательскому интерфейсу. Создайте диаграмму классов возможных сигналов, показав их отношения наследования. Не забудьте при этом использовать стереотип «сигнал».
3. На рис. 7 показаны параллельные подчиненные состояния для состояния GUI-интерфейса Работа. Постройте диаграмму состояния Отображение заставки, которая включала бы параллельные подчиненные состояния.