Моделирования uml


Download 1.84 Mb.
Pdf ko'rish
bet75/115
Sana16.06.2023
Hajmi1.84 Mb.
#1489923
1   ...   71   72   73   74   75   76   77   78   ...   115
Bog'liq
ivanov novikov unificirovannii jazik modelirovanija uml 2011

4.2.4. Составные состояния 
Выше мы рассмотрели простые состояния, соответствующие 
состояниям обычной модели конечного автомата. Пришла пора 
рассмотреть другие понятия, близкие к понятию состояния, но 
специфические для UML. Их можно разделить на две группы:
- составные состояния (composite state), 
- специальные состояния (pseudo state). 
Составное состояние может быть 
- последовательным (sequential / non-orthogonal state), 
- параллельным (ортогональным) (concurrent / orthogonal state). 
Специальные состояния в UML 1 бывают следующих типов: 
- начальное (initial); 
- слияние (join); 
- развилка (fork); 
- переходное (junction);
- выбор (choice); 
- поверхностное историческое (shallow history); 
- глубинное историческое (deep history); 
- синхронизирующее (synch); 
- прекращение выполнения (terminate), 
- заключительное (final); 
- ссылочное состояние (submachine state), 
- состояние "заглушка" (stub state). 
В UML 2 из этого списка удалены синхронизирующее состояние 
и состояние "заглушка", но вместо последнего введены два новых 
специальных состояния: "точка входа" (entry point) и "точка выхода" 
(exit point). 
Составное состояние — это состояние, в которое вложена 
машина состояний. Если вложена только одна машина, то 
состояние 
называется 
последовательным, 
если 
несколько — 
параллельным. 


143
Глубина вложенности в UML неограниченна, т. е. состояния 
вложенной машины состояний также могут быть составными. В 
UML 2 параллельные состояния переименованы в ортогональные. Мы 
используем оба термина как синонимы. 
Мы начнем с простого примера, чтобы сразу пояснить 
прагматику составного состояния, т. е. зачем это понятие введено в 
UML, а затем опишем тонкости семантики и связь с другими 
понятиями машины состояний UML. 
Рассмотрим всем известный прибор: светофор. Он может 
находиться в двух основных состояниях: 

Off
— вообще не работает — выключен или сломался, как 
слишком часто бывает; 

On
— работает.
Но работать светофор может по-разному: 

Blinking
— мигающий желтый, дорожное движение не 
регулируется; 

Working
— работает по-настоящему и регулирует движение. 
В последнем случае у светофора есть 4 видимых состояния
являющихся 
предписывающими 
сигналами 
для 
участников 
дорожного движения: 

Green
— зеленый свет, движение разрешено; 

YellowGreen
— состояние перехода из режима разрешения в 
режим запрещения движения (это настоящее состояние, светофор 
находится в нем заметное время); 

Red
— красный свет, движение запрещено; 

RedYellow
— состояние перехода из режима запрещения в 
режим 
разрешения 
движения 
(это 
состояние 
отличное 
от 
YellowGreen
, светофор подает несколько иные световые сигналы, и 
участники движения обязаны по-другому на них реагировать). 
На рис. 4.6 приведена соответствующая диаграмма автомата 
светофора с использованием составных состояний (1) (несколько 


144
забегая вперед, мы использовали здесь событие таймера, выделяемое 
ключевым словом 
after
). 
Как мы уже упоминали, в принципе всегда можно обойтись без 
использования составных состояний. Например, на рис. 4.7 приведена 
эквивалентная машина состояний (т. е. описывающая то же самое 
поведение), не содержащая составных состояний. Сравнение 
диаграмм на рис. 4.6 и рис. 4.7 является, по нашему мнению, 
достаточным объяснением того, зачем в UML введены составные 
состояния. 
Общая идея составного состояния ясна. Теперь нужно 
внимательно разобраться с деталями составных состояний и 
связанных с ними переходов. Мы сделаем это постепенно, несколько 
раз возвратившись к описанию семантики составных состояний и 
переходов в подходящем контексте. 
Рис. 4.6. Составные состояния 


145
Первое правило можно сформулировать прямо здесь: переход из 
составного состояния наследуется всеми вложенными состояниями. 
Мы не случайно употребили характерный термин объектно-
ориентированного программирования "наследование" в данном 
контексте. По нашему мнению, назначение составных состояний 
аналогично назначению суперклассов:
17
выявить общее в нескольких 
элементах и описать это общее только один раз. Тем самым 
сокращается описание модели, и она становится более удобной для 
восприятия человеком (сравните рис. 4.6 и рис. 4.7 еще раз).
Off
Blinking
RedYellow
YellowGreen
Red
Green
a fter 3 se c
a fter 45 se c
a fter 5 sec
afte r 30 sec
swi tchOn ()
switc hOff( )
turnO ff()
turnO n()
t urnOf f()
turn Off()
t urnOf f()
t urnOf f()
swit chOff ()
sw itchO ff()
swit chOff ()
Рис. 4.7. Эквивалентная диаграмма, не содержащая составных состояний 
17
Но состояния не являются классификаторами, поэтому прямо 
использовать 
отношение 
обобщения 
было 
бы 
синтаксически 
неправильным. 


146

Download 1.84 Mb.

Do'stlaringiz bilan baham:
1   ...   71   72   73   74   75   76   77   78   ...   115




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling