Шаг 174.
Унифицированный язык моделирования UML.
Состояние автомата объекта

    На этом шаге рассмотрим определение состояния автомата объекта в UML.

    Каждый объект имеет свой жизненный цикл: сначала создается, затем прекращает свое существование. Между этими двумя событиями объект может влиять на другие объекты, посылая им сообщения, а также подвергаться их влиянию, принимая сообщения от них. Во многих случаях такие сообщения представляют собой простые синхронные вызовы операций. Например, экземпляр класса Customer (Покупатель) может вызвать операцию getAccountBalance (ЗапроситьБаланс) на экземпляре класса BankAccount (БанковскийСчет). Подобным объектам не нужен автомат для описания их поведения, поскольку их текущее поведение не зависит от прошлого.

    В системах других типов можно встретить объекты, которые должны отвечать на сигналы, представляющие собой асинхронные сообщения, передаваемые между экземплярами. Например, сотовый телефон должен отвечать на случайные телефонные вызовы с других телефонов, на события нажатия клавиш пользователем, а также на сигналы из сети, когда телефон перемещается из одного региона в другой. Кроме того, можно встретить объекты, текущее поведение которых зависит от прошлого. Например, поведение системы управляемой ракеты "воздух-воздух" зависит от ее текущего состояния, такого как NotFlying (НеЛетит) – не слишком хорошая идея запускать ракету с самолета, стоящего на земле – или Searching (Поиск): не стоит пускать ракету, пока не выбрана цель.

    Поведение объекта, который должен отвечать на асинхронные сообщения либо его текущее поведение зависит от прошлого, лучше всего специфицировать при помощи автоматов. Это касается экземпляров классов, которые могут принимать сигналы, включая многие активные объекты. Фактически объект, который принимает сигнал, но не имеет для него перехода в своем текущем состоянии и не откладывает реакцию на сигнал в этом состоянии, будет просто его игнорировать. Другими словами, отсутствие перехода для сигнала не является ошибкой; это значит, что в данной точке сигнал не представляет интереса. Вы также будете использовать автоматы для моделирования поведения систем в целом, особенно реактивных, которые должны отвечать на сигналы действующих лиц за пределами системы.

    В основном для моделирования поведения вариантов использования применяются взаимодействия, но с той же целью можно использовать и автоматы. Также они подходят для моделирования поведения интерфейсов. Хотя интерфейс может и не иметь конкретных экземпляров, класс, реализующий его, – может. Такой класс должен соответствовать поведению, специфицированному автоматом для интерфейса.

    Состояние (state) – это ситуация в жизненном цикле объекта, в которой он удовлетворяет заданным условиям, осуществляет некую деятельность или ожидает определенного события. Объект пребывает в том или ином состоянии ограниченный период времени. Например, обогреватель в доме может быть в любом из четырех состояний: простой (ожидание команды на включение обогрева), активация (газ подан, но ожидается достижение определенной температуры), функционирование (газ и котел включены), выключение (подача газа прекратилась, но котел включен, остаточное тепло сбрасывается из системы).

    Когда автомат объекта находится в определенном состоянии, говорят, что в этом состоянии находится сам объект. Например, экземпляр Heater (Обогреватель) может быть в состоянии Idle (Простой) или ShuttingDown (Выключение).

    Состояние характеризуется несколькими частями:

    Имя состояния – это текст, который может состоять из букв и цифр в неограниченном количестве, а также некоторых знаков препинания (за исключением таких, как двоеточие), и записываться в несколько строк. На практике имена состояний представляют собой краткие существительные, взятые из словаря моделируемой системы. Обычно первая буква каждого слова в имени состояния – заглавная, например Idle или ShuttingDown.

    Как показано на рис. 1, состояние изображается в виде прямоугольника с закругленными углами.


Рис.1. Состояния

    Как показано на рисунке 1, существует два особых состояния, которые могут быть определены для автомата объекта. Первое из них – начальное состояние, которое означает начальную точку, по умолчанию установленную для автомата или подсостояния. Оно изображается закрашенным черным кружком. Второе состояние – конечное; оно означает, что работа автомата или включающее состояние завершены. Конечное состояние представлено в форме закрашенного черного кружка,nвписанного в окружность.

    На самом деле начальное и конечное состояния – это псевдосостояния. Ни одно из них не наделено признаками "нормальных" состояний, за исключением имени. А вот переход от начального состояния к обычному может обладать всеми характерными для переходов свойствами, включая защитное условие и действие (но не инициирующее событие).

    На следующем шаге рассмотрим понятие перехода между двумя состояниями автомата объекта в UML.




Предыдущий шаг Содержание Следующий шаг