простой – сюда относятся типы INTEGER, REAL, STRING, BINARY (символьная строка, представляющая число в двоичном виде с указанием длины строки), LOGICAL (допускаются значения FALSE, TRUE, UNKNOWN), BOOLEAN (допускаются значения
FALSE, TRUE), NUMBER (целое или вещественное число);
агрегативный – типы ARRAY, LIST, SET или BAG, организующие множество элементов базового типа;
поименованный тип – это один из двух возможных типов: объект (когда значением атрибута сущности является ссылка на другой экземпляр объекта) или определенный тип. При этом определенный тип может быть простым, агрегативным, другим определенным или сконструированным типом. К сконструированным типам относятся ENUMERATION и SELECT. Тип SELECT –
это список допустимых базовых типов.
В нашем примере даны определения четырех типов объектов. Рассмотрим их последовательно.
POINT – объект "точка", его атрибутами являются три координаты, объединенные в один агрегативный тип (массив).
COLOUR_POINT – объект "цветная точка", являющийся подтипом объекта "точка",а следовательно, наследующий все его атрибуты и при этом имеющий один свой атрибут "цвет". Атрибут "цвет" имеет значение перечисляяемого (ENUMERATION) типа. Заметим, что объект "цветная точка" одновременно является и объектом "точка".
CONTOUR – объект "контур", который имеет один атрибут, являющийся списком (LIST) составляющих этот контур точек. Контур может включать в себя как точки, так и цветные точки.
COLOUR_CONTOUR – объект "цветной контур", он имеет один атрибут, являющийся списком (LIST) цветных точек.
Проверка правил и исполняемые операторы языка Express
Помимо основной части, содержащей операторы описания типов данных, язык Express имеет и исполняемые операторы, связанные прежде всего с проверкой правил. Покажем на примере одного из прикладных протоколов использование правил в языке Express.
В ISO 10303 определено, что проверка выполнения правил не производится автоматически в момент возникновения объектов и значений атрибутов, под действие правил подпадающих. Выполнение правил проверяется только по специальному запросу. Это вполне понятно и оправданно, иначе создание моделей STEP, описанных на Express, было бы затруднено или вовсе невозможно.
Наличие стекол во всех окнах дома является правилом, которое должно быть соблюдено к моменту сдачи дома. А требование выполнять это правило во время строительства и тем более реконструкции причиняло бы только неудобство.
Назовем типы правил:
Правило уникальности, задаваемое оператором UNIQUE. В соответствии с этим правилом значение атрибута или комбинация значений атрибутов объекта уникальна среди множества экземпляров объекта.
Пример 1:
ENTITY attribute
ABSTRACT SUPERTYPE OF (ONEOF(derived_attribute, explicit_attribute,
inverse_attribute));
name : STRING;
INVERSE
parent_entity : entity_definition FOR attributes;
UNIQUE
UR1: name, parent_entity;
END_ENTITY;
В этом примере правило UNIQUE определяет условие, что среди множества всех определений атрибутов нет двух определений, у которых совпадали бы имена (name) и объекты, в которых они используются (parent_entity).
Правило WHERE, определяющее отношения между значениями атрибутов одного экземпляра объекта. Например, правило с именем WR4 для объекта axis2_placement_3d (локальная система координат геометрического объекта) определяет, что если для локальной системы координат назначены две оси, то их произведение положительно. Для вычисления значения произведения осей в этом же протоколе определена функция cross_product, которую разбирать подробно не будем, так как для этого пришлось бы давать определения операторов языка Express. Самого общего знакомства с основами программирования и геометрии достаточно, чтобы понять, что эта функция вычисляет произведение векторов. Точно такие же функции, написанные на самых различных языках программирования, входят во множество библиотек и геометрических систем. Настала пора включить эту функцию и в стандарт.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.