Построение стандарта STEP. Идеология EXPRESS. Функции (Function) и процедуры (Procedure). Элементы языка EXPRESS, страница 5

low - нижняя границ индекса массива

high - верхняя граница индекса массива (если знак ‘ ? ’ то может быть любое число элементов

base_type - тип элементов массива

Примеры:

a : SET [0:?] OF REAL;

b : SET [0:2] OF LIST [1:?] OF INTEGER

Определяемый (Defined) тип данных

Описывает новый тип данных как конструкцию из стандартных и ранее определенных типов данных.

Формат:

TYPE name_of_type = define_of_type;

END_TYPE;

где

name_of_entity - имя описываемого типа данных

define_of_type - описание структуры типа данных

Пример:

TYPE new_type = ARRAY [ 2:8 ] OF REAL;

Тип данных - Перечисление (ENUMERATION)

Переменная этого типа может принимать одно из значений заданных в списке. Фактически, в этой переменной содержится номер элемента в списке.

Формат:

enumeration_type = ENUMERATION OF ( val_1, val_2,...)

где

val_1, val_2, ... - перечисленные через запятую возможные значения переменной.

Пример:

TYPE цвета = ENUMERATION OF

( красный, синий, зеленый);

END_TYPE;

Тип данных - Выбор (SELECT)

Тип данных “SELECT” представляет собой именованную коллекцию других типов. Это означает, что переменна типа “SELECT” может принимать значения всех типов входящих в SELECT.

Формат:

select_type = SELECT ‘(‘ name_1 [ , name_2...] ‘)’

где

name_1, name_2, ... - имена типов данных составляющих SELECT

Пример:

TYPE univers_type = SELECT

( INTEGER, LOGICAL, STRING(10) );

END_TYPE;

Связи

Отношения

В общем случае связи являются отношениями типа “многие ко многим”. Это можно отобразить следующим образом:

E.A {k:l}-{p:q} Base T

где:

E - объект

A - атрибут

T - тип атрибута

k - нижняя граница массива ссылок в прямом направлении

l - верхняя граница массива ссылок в прямом направлении

p - нижняя граница массива ссылок в обратном направлении

s - верхняя граница массива ссылок в обратном направлении

Base - тип отношения

T - тип включаемых объектов

Это выражение можно прочитать так: “ атрибутом A объекта E является множество типа Base ссылок на объекты типа T. В данном множестве может содержаться от k до l элементов. При этом все экземпляры объектов типа E могут ссылаться на каждый экземпляр объекта T от p до q раз.”

Если в качестве верхней границы массива указать знак “?”, то максимальное число ссылок не ограничено.

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

Если в качестве Base выступает не один из Aggregation типов, то l <= 1. Т.е. атрибут может содержать не более чем одной ссылки.

Пример:

ENTITY сборка;

состав : LIST [1,?] OF деталь;

цвет : STRING(10);

масса : REAL;

END_ENTITY

Наследование

Все объекты являются генетическими (generic) типами. Это означает, что для определения объектов может быть применено наследование. Каждый объект потомок наследует все атрибуты и методы своего родителя.

Спецификация EXPRESS определяет как простое так и множественное наследование.

Выделяется 3 опции наследования : AND, ANDOR, ONEOF

AND: Объект, являющийся потомком нескольких объектов по опции AND, наследует всё содержимое всех объектов родителей.

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

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

Пример:

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