ГОСТ Р И С 0 10303-11 — 2009
12.10 Оператор построения экземпляра сложного объекта
Оператор построения экземпляра сложного объекта (||) создает экземпляр сложного объекта по
средством объединения частичных значений сложного объекта. Частичные значения сложного объекта
могут объединяться в произвольном порядке. Результатом выражения оператора построения экземпляра
сложного объекта является частичное значение сложногообъекта либо экземпляр сложного объекта. Час
тичный сложный объектный типданных может присутствовать только один раз на одном уровне выражения
оператора построения экземпляра сложного объекта. Частичное значение сложного объекта может присут
ствовать на разных уровнях, если они являются вложенными, то есть если частичное значение сложного
объекта используется для построения экземпляра сложного объекта, являющегося атрибутом частичного
значения сложного объекта, объединяемого сдругими элементами при построении экземпляра сложного
объекта. Если какой-либо из операндов имеет неопределенное (?) значение, то результатом выражения
будет также неопределенное (?) значение. Дополнительная информация об экземплярахсложных объектов
представлена в приложении В.
Пример — Задано:
ENTITY а
ABSTRACT SUPERTYPE;
а1 : INTEGER:
END_ENTITY;
ENTITY b SUBTYPE OF (a);
M : STRING;
END_ENTITY;
ENTITY c SUBTYPE OF (a);
c1 : REAL;
END_ENTITY:
Тогда могут быть простроены следующие экземпляры сложных объектов:
LOCAL
v1 = а ;
v2 = с;
ENDLOCAL;
v2 := а(2) || с(7.998е-5); — это экземпляр типа а&с
v1 := v2 11 b(’abc’);— это экземпляр типа а&Ь&с
v1 := v2Ya || Ь("00002639"); — это экземпляр типа а&Ь
v1 := v1 || v2;— недопустимо, т.к. тип был бы а&Ь&а&с
П р и м е ч а н и е — Назначение v1 копирует экземпляр, созданный оператором построения экземпляра
сложного объекта; данный экземпляр содержит значение v2. но не экземпляр v2.
12.11 Совместимость типов
Операнды оператора должны быть совместимы с типом (типами) данных, необходимых оператору.
Типы данных обоих операндов некоторых операторов также должны быть совместимы друг с другом, что
было определено выше вданном разделе. Типы данных могут быть совместимыми, не будучи идентичны
ми. Типы данных являются совместимыми при выполнении одно из следующих условий;
- типы данных совпадают;
-один тип данных является подтипом или конкретизациейдругого (включая определенные типыдан
ных. использующие определенный типданных в качествебазисного типа данных, и конструкционные типы
данных, основанные на наращиваемых типах данных);
- оба типа данных являются типами данных ARRAY с совместимыми базисными типами данных и
одинаковыми границами;
- оба типа данных являются типами данных LIST с совместимыми базисными типами данных;
- оба типа данных являются типами данных BAG или SET с совместимыми базисными типами
данных.
Пример — Заданы следующие определения:
TYPE natural = REAL;
WHERE SELF >= 0.0;
ENDTYPE;
TYPE positive = natural;
WHERE SELF > 0.0;
ENDTYPE;
90