Активный динамический объект

Top  Previous  Next

Объектом в языке MVL является активный динамический объект (АДО) – расширение активного объекта языка UML.

 

В языке UML выделяются «активные» и «пассивные» объекты. Соответственно выделяются «активные» и «пассивные» классы, экземплярами которых эти объекты являются.

Активным объектом UML называется «объект, который владеет потоком управления и может инициировать управляющие воздействия» [1].

Пассивным объектом UML называется «объект, у которого нет собственного потока управления. Все его операции выполняются под управлением потока, прикрепленного к активному объекту» [1].

Поток управления обычно задается машиной состояний (диаграммой состояний) языка UML. Управляющие воздействия сводятся к изменению значений видимых атрибутов других объектов и вызове видимых методов этих объектов (активных или пассивных). Для дискретных моделей этого вполне достаточно.

 

Для того, чтобы иметь возможность строить непрерывные и гибридные модели, заменим в определении «поток управления» на «поведение - процесс, развивающийся во времени».

Под поведением будем понимать непрерывное поведение или гибридное поведение. Такое расширение активного объекта языка  UML и является активным динамическим объектом языка MVL.

Соответственно класс, порождающий активный динамический объект, называется активным динамическим классом.

Расширение диаграммы состояний UML называется картой поведения.

 

Все объекты модели функционируют параллельно в модельном времени.

 

Семантика любого элемента в языке UML задается с помощью его стереотипа. Именно через стереотип стандартные элементы языка UML соотносятся с семантически «окрашенными» понятиями моделирования.

По стереотипу активные динамические классы (и, соответственно, объекты) разделяются:

по типу собственного поведения - на непрерывные и гибридные;

по взаимодействию с внешним окружением - на изолированные и открытые;

по наличию статической внутренней структуры - на элементарные и составные.

Стереотип конкретного класса является комбинацией этих признаков (то есть может быть непрерывный открытый элементарный объект, гибридный изолированный составной объект и т.д. ).

 

Возможны следующие преобразования стереотипа:

любой класс с непрерывным поведением может быть преобразован в эквивалентный гибридный класс с единственным состоянием;

любой гибридный класс с единственным состоянием всегда может быть преобразован в эквивалентный непрерывный;

любой класс, соответствующий изолированной системе, может быть преобразован в класс, соответствующий открытой системе с пустым набором внешних переменных, и наоборот;

любой класс, имеющий элементарную структуру, может быть преобразован  в класс с составной структурой с пустым набором локальных объектов и связей и наоборот.

 

 

Объект (экземпляр класса) может быть создан или уничтожен:

явно с помощью специальных операторов, выполняемых в последовательности мгновенных дискретных действий;

неявно при создании и уничтожении объекта-контейнера, в состав которого данный объект входит в качестве локального;

неявно при входе в состояние и выходе из состояния, которому приписан данный объект в качестве деятельности.

 

Экземпляр модели в целом создается исполняющей системой инструмента моделирования в начале вычислительного эксперимента и уничтожается по его завершении.

 

АДО представляет собой совокупность атрибутов, методов и поведения.

Следует помнить, что когда мы говорим об описании объекта, мы говорим об активном динамическом классе, а когда мы говорим о текущем состоянии объекта,

мы говорим о каком-то конкретном экземпляре этого класса.

 

Атрибуты объекта подразделяются на внешние и внутренние.

Внутренний атрибут может использоваться только в описании собственного поведения объекта и не видим извне, то есть имеет видимость «protected».

Внешний атрибут видим как «изнутри» объекта, так и извне, то есть имеет видимость «public».

 

Внутренние атрибуты по стереотипу подразделяются на константы и внутренние переменные. Константы не меняют своего значения. Значение внутренней переменной может изменяться во времени в процессе функционирования объекта.

 

Внешние атрибуты по семантике использования подразделяются на параметры и внешние переменные.

Параметр - это внешний атрибут, значение которого присваивается только один раз при создании экземпляра класса и далее не меняется в течение всего времени существования объекта.

Внешние переменные по стереотипу подразделяются на:

вход - внешняя переменная, значение которой может быть изменено только извне;

выход - внешняя переменная, значение которой может быть изменено только внутри объекта;

контакт - внешняя переменная, значение которой может быть изменено как извне, так и внутри объекта. Значения всех контактов, участвующих в связи, равны в любой момент времени;

поток - внешняя переменная, значение которой может быть изменено как извне, так и внутри объекта. Сумма значений всех потоков, участвующих в связи, равна нулю в любой момент времени;

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

Подробно об этих видах внешних переменных и о связях рассказано в главе «Компонентные модели».

 

Все атрибуты видимы в описании локальных классов, в данного класса. Определение атрибута в общем случае включает в себя:

стереотип атрибута;

идентификатор атрибута;

указание типа атрибута;

начальное значение атрибута;

комментарий (прикладной смысл атрибута)

 

Атрибут имеет семантику значения, если в качестве типа атрибута указан тип данных, и семантику указателя, если в качестве типа атрибута указан класс объекта.

 

В момент создания экземпляра класса атрибуты приобретают начальное значение, указанное в описании класса или явно указанное в конструкторе данного экземпляра.

Например, пусть в определении класса «Резистор» для параметра «R» указано значение 1. Однако, для конкретного экземпляра класса «Резистор» - R2 – в качестве действительного значения

может быть указано R=2. В выражении для начального значения могут указываться другие атрибуты этого же класса, однако, эти выражения не должны создавать алгебраических циклов.

В качестве начального значения для атрибута с семантикой указателя может использоваться пустая ссылка «null» или конструктор соответствующего класса, например:

 R1: Резистор := null;

R2: Резистор := new Резистор(R=4);

 

Методы объекта (функции и процедуры) делятся на внутренние (видимость «protected») и внешние (видимость «public»). Внутри методов могут декларироваться свои локальные переменные.

Определение локальной переменной соответствует определению атрибута без стереотипа.

Локальные переменные могут также декларироваться в действиях переходов, а также во входных и выходных действиях состояний карты поведения.

 

В теле метода могут использоваться алгоритмические операторы из набора операторов языка MVL (присваивание, цикл, условный и т.д., а также обращения к внешним процедурам и функциям, написанным на языках программирования.

 

Внешние методы могут вызываться другими объектами при выполнении дискретных действий в карте поведения. Таким образом, АДО может использоваться и как пассивный объект.

Если такой внешний вызов меняет значения атрибутов объекта, он может повлечь за собой и изменения в его поведении.

 

Непрерывное поведение описывается системой обыкновенных дифференциально-алгебраических уравнений, в «свободной», выбранной пользователем форме (Система уравнений).

 

Гибридное поведение задается «картой поведения» - модификацией последовательной диаграммы состояний языка UML (Карта поведения).

Основным отличием карты поведения от диаграммы состояний является возможность приписать состоянию в качестве деятельности экземпляр активного динамического объекта.

Частный случай карты поведения, в которой состояниям не приписано никакой деятельности, совпадает с диаграммой состояний и объект с таким поведением совпадает  с активным объектом языка UML.

Другим частным случаем является карта поведения с единственным состоянием, которому приписана непрерывная деятельность – экземпляр непрерывного локального класса.

Гибридный объект с единственным состоянием всегда может быть преобразован в эквивалентный непрерывный и наоборот  (Рис. 1).

 

bc_eq

 

                                         Рис. 1

 

Для задания деятельностей в состояниях карты поведения могут понадобиться определения локальных классов.

В определениях локальных классов видимы все атрибуты и методы своего глобального класса.

 

В общем случае поведение АДО является суперпозицией его собственного поведения и поведения локальных объектов с учетом связей между ними.

Локальные объекты – это объекты, входящие в структурную схему объекта-контейнера, а также объекты, на которые указывают атрибуты объектного типа.

Выделение составных объектов по наличию статической структурной схемы в определенной степени является данью традиции моделирования.

Моделисту удобно и наглядно представлять (рисовать в визуальном инструменте моделирования) сложную систему в виде структурной схемы.

Однако, те же объекты, входящие в структурную схему, можно сделать атрибутами объектного типа объекта-контейнера, а связи задать уравнениями объекта-контейнера.