
передачи сообщений необходимо, чтобы генерирующий сообщения объект содержал информацию
о вызываемом объекте, что означает наличие у этого объекта соответствующего указателя.
Причем при отношении композиции объекты-части могут быть организованы как объектные поля
объекта-целого.
В том случае, если объекты проектируемого класса должны реализовывать сложное
поведение, для них целесообразно разрабатывать диаграммы состояний.
Диаграммы состояний объекта. Под состоянием объекта применительно к диаграмме
состояний понимают ситуацию в жизненном цикле объекта, во время которой он: удовлетворяет
некоторому условию, осуществляет определенную деятельность или ожидает некоторого события.
Изменение состояния, связанное с нарушением условия или, соответственно, завершением
деятельности или наступлением события называют переходом.
Диаграммы состояний показывают состояния объекта, возможные переходы, а также события
или сообщения, вызывающие каждый переход.
Условные обозначения состояний приведены на рис. 7.18. Действие, указанное после слова
Вход, выполняется при входе в состояние, а действие, указанное после слова Выход - при выходе
из него. Деятельность связывается с нахождением в состоянии.
Переход обозначается линией со стрелкой и может быть помечен меткой, состоящей из трех
частей, каждую из которых можно опустить:
<Событие> [<Условие>]/<Действие>.
Если событие не указано, то это означает, что переход выполняется по завершению
деятельности, связанной с данным состоянием. Если же оно указано - то при наступлении
события.
Условие записывается в виде логического выражения. Переход происходит, если результат
выражения — «истина». Объект не может одновременно перейти в два разных состояния, поэтому
условия перехода для любого события должны быть взаимоисключающими.
В отличие от деятельностей, действия, указанные для перехода, связывают с последним и
рассматривают как мгновенные и непрерываемые.
При необходимости можно определять суперсостояния (рис. 7.18, г), которые объединяют
несколько состояний в одно. Этот механизм обычно используют, чтобы показать переход из
нескольких состояний в одно и то же состояние, например, при отмене каких-либо действий.
Пример 7.6. Разработать диаграмму состояний для объекта класса Решение.
Диаграмму состояний объекта строим, анализируя соответствующие диаграммы
последовательности действий (см. рис. 7.8 и 7.9). При этом необходимо уточнить, в какой момент
разрешить прерывание процесса извне. Чтобы показать, что прерывание процесса возможно еще
во время его инициализации, вводим суперсостояние Процесс. При реализации следует учесть
возможность прерывания процесса до активации Алгоритма (рис. 7.19).