Дж. Рамбо, М. Блаха - UML 2.0 - Объектно-ориентированное моделирование и разработка (1158633), страница 34
Текст из файла (страница 34)
Кнопки Т1МЕГ%0 (Время вперед) и Т1МЕ ВАСК(Время назад) изменяют 150 Глава б е Углубленное моделирование состояний время в программной таблице. Нажатие 5ЕТ ОАУ !Установка дня) вызывает переход во вложенное состояние 5ес г)ау. На дисплее отображаются дни недели. Последующие нажатия 5ЕТ Т)А У переключают дни недели. РгодгапипаЫетйеппов!а! Рпгпасе ге!ау елея (!етр и !в!де! влг) Веавоп вей!сй )и Неа!) п1: !)вег!п!в!тасе Зеавоп вийей гглеп )!етр > !в!де! + г) ог Звавоп ввгйсй по! гп Нва!) А1г сопагйопег гв1ау гглеп (!етр > !в!де! апг) Зеавоп ввгйсй !а Соо1) гглвп (!етр < !вгде! — г) ог Ввавоп втгйсй по1 )и Соо!) йип!попса!ог в!лап !Рогпасв )п оп ог АС !и оп) рап етгйсй тглеп )Рпгпасе!и ой ог АС !и ой) Рап ге1ау плел (йпп !пака!ог !и Вота!и!пд оп ог Рап в!ейсй !и оп) и вел !оп !попса!ог !и Ееегу!Ыпд ой впг) рап ввгйсй !и аи!о) Рис.
6.10. Диаграмма состояний программируемого термостата 6.5. Пример модели состояний 151 нзег 1п1егтасв роигег оп / 1оас згапсага ргодгат лт ртдгат 1п!огас!1че Фар1ау вяег (! зес) (!!те= ргодгат!1те) / азчапсе ргодгат айаг (2 звс) 01зр!ау бте 0/зр!ау гетр г/о / зпо!и !!те г/о / зьоп 1етр апег (2 зес) Пип впау / зе1 1агдег (гетр 1гогп ргодгат) р) / газе!! агде1 1етр !етр ир / 1псгетеп! тгде1 1етр Ьом ргодтп! нош гетепг!агде1 1етр апвг (90 звс ггалои! /при/) Зещр зс: Звг ргодгат ас: Зе1 /!ау ас: Зв! с!оса мзп ртдгат зв1!/зу зы с/оса Тетра!а!игв пиМе Е-С Ьипоп Тел!о 1п Св1в!из впау / сопчеп гетр !о С Татр 1п Еапгеппеи епау / сопчег1 гетр 1о Е Е-С Ьипоп Нгдш!1дш зч/11св исл Ьилоп ир Рис.
б.11. Поддиаграмма пользовательского интерфейса термостата Нажатие кнопки 71Е% РЯСМ (Просмотреть программу) вызывает переход во вложенное состояние Ее/ рго5гат (Установка программы), которое состоит из трех параллельных поддиаграмм, управляющих отображением времени, температуры и периода программы. Состояние Яе! Ргорат всегда начинается с первого периода программы. Последующие события о!еги ргодтат вызывают переключение между периодами. Событие и!еиг ргодгат показано на всех трех поддиаграммах, потому что каждая из них переключается на отображение следующего значения. Обратите внимание, что события !!те )Ы и !гте (гас)г изменяют время с шагом в 15 минут, в отличие от тех же событий в состоянии Ее/ с(осЬ.
Кроме того, переходы гетр ир и гетр ггок/и снабжены сторожевыми условиями, потому что температура должна находиться в разрешенном диапазоне. 152 Глава б ° Углубленное моделирование состояний Зе! Ргодгат дтв Лед / асс 19 в!пи!ее !о рпгдгат Вве иви ргодгат / аачапсе !о пвх! Ргодгап! доге 1/тв Ьас/г / сиьиас! ! 9 в!питое /гов ргодгав йпе 1втр ир1!етр<90Е] / гпсгетеп! Ргодгав !етр инеи Ргодгат / зачатое !о пех! Ргодгав !етр 1втр доип11етрх40Е] / Оесгетеп! Ргодгав !етр ч/еч/Ргодгат / аачапсе !о пех! рпгдгав !ввр Рис.
б.12. Поддиаграммы режима настройки термостата Ни у одного из вложенных состояний Упгегасггпе /1/цт!ау (Интерактивный дисплей) нет явных исходящих переходов. Каждое вложенное состояние завершается неявным образом переходом в другое вложенное состояние с основного контура!пгегасггие Йяг/ау.
6.6. Модель состояний и модель классов Модель состояний указывает разрешенные последовательности изменений объектов из модели классов. Диаграмма состояний полностью или частично описывает поведение объектов одного класса. Состояния являются классами эквивалентности для значений и связей объекта. Структура состояний связана со структурой классов. Вложенное состояние уточняет возможные значения и связи для своего объекта. И обобщение классов, и вложение состояний позволяют разбить множество возможных значений объекта. Один объект может находиться в разных состояниях в разные моменты времени, сохраняя свою индивидуальность, но не может изменять класс.
Поэтому внутренние 6.7. Практические рекомендации 153 различия объектов правильно отражать в модели в виде разных классов, тогда как временные различия представляются разными состояниями одного класса. Композитное состояние — это агрегация нескольких параллельных состояний. В модели классов существует три источника параллелизма. Во-первых, это агрегация объектов: каждая часть агрегации имеет свое состояние, поэтому агрегат в целом находится в состоянии, которое представляется как комбинация состояний всех его частей. Вторым источником является агрегация в рамках объекта: частями объекта являются его значения и связи. Их группы определяют параллельные подсостояния композитного состояния объекта. Третьим источником является параллельное поведение объекта (пример приведен на рис.
6.9). Три источника параллельности обычно являются взаимозаменяемыми. Например, объект может содержать атрибут, указывающий на выполнение некоторой деятельности. Модель состояний класса наследуется его подклассами. Подклассы наследуют состояния своего предка и переходы между ними. Подклассы могут иметь и свои собственные диаграммы состояний.
Но каким образом взаимодействуют между собой диаграммы состояний подкласса и суперкласса? Если они описывают несовместные наборы атрибутов, то никаких проблем это не создает: подкласс находится в композитном состоянии, состоящем из параллельных диаграмм. Если же на диаграмме состояний подкласса присутствуют атрибуты с диаграммы состояний суперкласса, в модели возможен конфликт.
Диаграмма состояний подкласса должна быть уточнением диаграммы состояний суперкласса. Любое состояние из диаграммы состояний предка может получить вложенные состояния или может быть разбито на параллельные области, однако новые состояния или переходы не могут добавляться на диаграмму состояний предка непосредственно, поскольку диаграмма состояний предка должна быть проекцией диаграммы состояний потомка. Несмотря на то что уточнение унаследованных диаграмм состояний возможно, в большинстве случаев следует делать диаграмму состояний подкласса независимым ортогональным параллельным дополнением к диаграмме, унаследованной от суперкласса, определяя ее на несовместном наборе атрибутов (обычно на тех атрибутах, которые были введены в данном подклассе). Иерархия сигналов не зависит от иерархии классов, которые обмениваются этими сигналами.
Это утверждение всегда выполняется на практике, если и не в теории. Сигналы могут определяться на разных классах объектов. Сигналы более фундаментальны, чем состояния. Состояния определяются взаимодействием объектов и событий. Переходы часто могут быль реализованы как операции с объектами, причем имя операции может соответствовать названию сигнала. Сигналы обладают большей выразительностью, нежели операции, поскольку действие сигнала зависит не только от класса объекта, но и от его состояния. 6.7. Практические рекомендации Все перечисленные ниже советы уже упоминались в тексте главы, но мы решили повторить их здесь еще раз для вашего удобства. ° Структурированные диаграммы состояний. Используйте структуру для упорядочения моделей с большим числом состояний (раздел 6Л).
154 Глава б ° Углубленное моделирование состояний ° Вложение состояний. Используйте вложенные состояния в тех случаях, когда один переход применим ко множеству состояний (раздел 6.2). ° Конкретные суперсигналы. Как и в модели классов, конкретных суперсигналов лучше избегать. Тогда будет очевидно, какие сигналы являются абстрактными, а какие конкретными. Все суперсигналы будут абстрактными, а сигналы-листья — конкретными. Для абстрагирования суперсигнала достаточно ввести сигнал-потомок Отлет (Прочие) (раздел 6.3), ° Параллелизм. Чаше всего параллелизм связан с агрегацией объектов.
На диаграмме состояний его можно не показывать явным образом. Для определения параллельных видов деятельности одного объекта используйте композитные состояния (раздел 6А). ° Согласованность диаграмм. Проверяйте согласованность различных диаграмм состояний при обработке общих событий, чтобы модель состояний в целом была корректной (раздел 6.5). ° Модель состояний и наследование классов. Старайтесь делать диаграммы состояний подклассов не зависящими от диаграмм состояний их предков. Диаграммы состояний подклассов должны описывать изменение атрибутов, которые были добавлены в этих подклассах (раздел 6.6). 6.8.
Резюме Модель классов описывает объекты, значения и связи, которые могут существовать в системе. Значения и связи объекта задают его состояние. С течением времени объекты воздействуют друг на друга, в результате чего их состояния претерпевают последовательность изменений.
Объекты реагируют на события— происшествия, связанные с конкретными моментами времени. Реакция на событие зависит от состояния, в котором находится объект, и может заключаться в изменении состояния или отправке сигнала отправителю первого сигнала или иному объекту. Комбинацию событий, состояний и переходов между ними для определенного класса можно абстрагировать и представить на диаграмме состояний. Диаграмма состояний — это граф состояний и переходов, подобный диаграмме классов, которая является графом классов и отношений между ними.
Модель состояний состоит из множества диаграмм состояний (по одной на каждый класс, динамическое поведение которого важно для модели в целом) и показывает возможное поведение системы в целом. Каждый объект следует диаграмме состояний своего класса независимо от других объектов. Диаграммы состояний разных классов взаимодействуют друг с другом посредством общих событий.