Активный динамический объект |
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).
Рис. 1
Для задания деятельностей в состояниях карты поведения могут понадобиться определения локальных классов. В определениях локальных классов видимы все атрибуты и методы своего глобального класса.
В общем случае поведение АДО является суперпозицией его собственного поведения и поведения локальных объектов с учетом связей между ними. Локальные объекты – это объекты, входящие в структурную схему объекта-контейнера, а также объекты, на которые указывают атрибуты объектного типа. Выделение составных объектов по наличию статической структурной схемы в определенной степени является данью традиции моделирования. Моделисту удобно и наглядно представлять (рисовать в визуальном инструменте моделирования) сложную систему в виде структурной схемы. Однако, те же объекты, входящие в структурную схему, можно сделать атрибутами объектного типа объекта-контейнера, а связи задать уравнениями объекта-контейнера.
|