Открытая коллекция знаний

OpenU.Ru

Справочник UML. Объектно-ориентированное проектирование.

initial state (исходное состояние)

Псевдосостояние, указывающее на стартовую точку по умолчанию для перехода, цель которого - граница композитного состояния.
См. composite state; creation; entry action; initialization; junction state.

Семантика

Для инкапсуляции необходимо как можно тщательнее разделять внешнее представление композитного состояния от его внутреннего устройства. Со стороны состояние выглядит некой монолитной сущностью с неизвестной внутренней структурой. С этой точки зрения переходы входят в само состояние, а затем выходят из него. Если же смотреть изнутри, то переходы относятся к подсостояниям, а не к самому композитному состоянию.
Исходное состояние - это фиктивное состояние, представляющее собой точку стыковки для входящего перехода, чья цель - граница композитного состояния. Это псевдосостояние в действительности его не существует, так как оно не может удерживать управление. Скорее его можно было бы назвать синтаксическим средством, которое показывает, куда должно переходить управление.
У исходного состояния должен быть, исходящий переход, не имеющий переключающего события (то есть переход, который запустится автоматически, как только будет осуществлен вход в исходное состояние). Этот переход связан с реальным состоянием, находящимся внутри композитного состояния, и может иметь относящееся к нему действие. Это действие будет выполняться при входе в состояние, после того как будет выполнено входное действие для самого композитного состояния (если оно задано). При этом входное действие для всего композитного состояния будет выполняться при любом входе в это композитное состояние, а действие для исходного состояния - только при входе в композитное состояние без явного указания начального состояния (вход по умолчанию). У такого действия есть доступ к неявному текущему событию, - иначе говоря, событию, которое запустило первый сегмент перехода, что, в конечном итоге, привело к переходу в исходное состояние.
У исходного состояния не может быть исходящего перехода с переключающим событием. Входящий переход равносилен переходу, входящему во внешнее композитное состояние. Переходы с переключающим событием нужно связывать с самим композитным состоянием. Чаще всего у перехода из исходного состояния нет сторожевого условия. В этом случае он представляет собой единственный переход из исходного состояния. Можно использовать несколько исходящих переходов, у которых есть сторожевые условия. При этом сторожевые условия должны учитывать все возможные варианты (можно поступить проще - один из переходов должен иметь сторожевое условие else). Суть в том, чтобы управление сразу же покидало исход-нос состояние, поскольку это всего лишь псевдосостояние. В такой ситуации должен запуститься какой-либо переход. У класса исходное состояние самого высокого уровня означает создание нового экземпляра этого класса. При запуске исходящего перехода неявным текущим событием будет событие создания объекта, значения аргументов которого передаются из конструктора. Эти значения доступны для действий, приписанных исходящим переходам.

Создание объекта

У исходного состояния наиболее верхнего композитного состояния класса есть некоторые особенности. У него может быть переключающее событие со стереотипом "create", а также именованное переключающее событие, у которого есть параметры. При этом может быть несколько переходов с различными переключающими событиями. Сигнатура каждого переключающего события должна соответствовать операции создания экземпляра данного класса. Когда создается новый объект данного класса, запускается переход, соответствующий операции создания, который получает аргументы от события вызова этой операции.

Нотация

Исходное состояние изображается в виде маленького закрашенного кружка, который располагается и символе композитного состояния. К кружку могут прикрепляться стрелки исходящие от перехода. В композитном состоянии может быть только одно исходное состояние (непосредственное). Прочие исходные состояния располагаются внутри вложенных композитных состояний.

Пример

На примере с рис. 108 все начинается с состояния X. После того как произошло событие е, запускается переход и выполняется действие а. Переход ведет в состояние Y. При атом выполняется действие при входе b и активизируется исходное состояние. Тут же запускается исходящий переход, выполняется действие с и состояние меняется на Z.

Рис. 108. Исходное состояние
Если же в то время, когда система находится в состоянии X, происходит событие f, то запускается другой переход и происходит событие d. Этот переход идет непосредственно в состояние Z. Исходный переход в данном случае не задействуется. Управление переходит к состоянию Y, поэтому совершается действие b. Действие с и этом случае не происходит.

Рис. 109. Исходное состояние с разветвлением
На рис. 109 изображено исходное состояние с разветвлением. Давайте опять допустим, что система начинает работу в состоянии X. Когда случается событие е, происходит действие а и система переходит в состояние Y. Тут же выполняется действие при входе b. Управление переходит к исходному состоянию. Тестируются атрибуты размера объекта, которому принадлежит это состояние. Если размер равен 0, то управление переходит к состоянию Z, если НЕТ - то к состоянию W,

Алфавитный указатель