Array, Real, Vektor, Matrix.

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

<признак видимости><имя>::<тип>=<значение по умолчанию>{свойства}.

Могут быть следующие свойства:

а) признак видимости имеет С++-семантику видимости членов класса:

- общий атрибут (public) (помечается символом +) означает, что любая сущность, имеющая доступ к объекту определяемого класса, имеет доступ и к этому атрибугу;

- защищенный атрибут (protected) (обозначается символом #) доступен только для методов класса и его потомков;

- приватный атрибут (private) (обозначается символом -) доступен только методам класса;

- признак области видимости может изображаться ключевым словом «public», «protected» или «private» или может быть спущен, что означает, что область видимости не показывается (а не то, что она не определена или «public» по умолчанию);

б) имя ‑ это идентификатор, представляющий имя атрибута;

в) тип ‑ зависящее от языка реализации описание типа атрибута;

г) значение по умолчанию ‑ зависящее от языка реализации выражение, задающее начальное значение для атрибута вновь созданного объекта;

д) свойства ‑ строка дополнительных свойств элемента (необязательная часть). Если свойства не указываются, скобки { } опускаются. Примером свойства может служить имя автора: {Author = Smith}.

По умолчанию атрибут является изменяемым. Указав в его свойствах пометку {frozen},можно объявить атрибут неизменяемым. Для атрибута можно указывать его множественность. Если она не обозначена, то предполагается, что атрибут может хранить ровно одно значение. Множественность может быть определена в квадратных скобках сразу после имени атрибута:

cords[3]: integer.

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

Операция (operation) ‑ это сущность, определяющая некое действие, которое может быть выполнено представителем класса. У операции есть имя и список аргументов. Операция изображается текстовой строкой, имеющей следующую грамматику:

<признак видимости><имя>(список параметров):<тип выражения, возвращающего значения> {свойства},

где: признак видимости, имя и свойства имеют тот же смысл, что и для атрибута; список параметров - список формальных параметров, разделенных запятыми; тип выражения, возвращающего значения - зависящее от языка реализации описание типа значения, возвращаемого функцией. Если оно не указано, то предполагается, что функция не возвращает значения (void для С/С++).

Каждый элемент списка параметров имеет следующий вид:

<имя>: <тип>=<значение по умолчанию>,

где: имя ‑ имя параметра; тип ‑ зависящее от языка реализации описание типа параметра; значение по умолчанию ‑ значение параметра по умолчанию.

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

new {Машина} [масса=100, жесткость=10];

Операция, не изменяющая состояние системы, помечается следующим образом: в список свойств операции помещается свойство {guery}.

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

“параметры масины”