ГОСТ Р ИСО 10303-11— 2009
Результирующие множества могут фильтроваться посредством оператора ’ / ’ с целью создания нового
результирующего множества:
[А. А & В . А Л С. А Л B AD . В &С , D]IA = (А. А & В . A & C .A & B & D ], Новое результирующее множество содержит
толью те элементы исходного результирующего множества, которые содержат данный частичный сложный объек
тный тип данных;
[А. А & В, А Л С. А Л В & D, В & С. D] / [8. D] = [АЛ В. А & BA D. ВА С. О]. Новое результирующее множество может
быть сф ормировано путем повторной фильтрации первого результирующего множества каждым частичным слож
ным объектным типом данных из второго результирующего множества с последующим объединением результа
тов посредством оператора ’ +
Может быть определена разность результирующих множеств посредством оператора’ — ’с целью создания
нового результирующего множества:
[А1. А2. 81. 82] — [А2. 8 1 ] s ,[А 1 .82]. Может быть сф ормировано результирующее множество, содержащее
все элементы первого результирующего множества за исключением элементов, входящих во второе результирую
щее множество.
Следующие тождества справедливы для любого результирующего множества:
[А, В] = [В. А]. Результирующие множества не зависят от порядка следования своих элементов;
[А, А. 8 ] н [А. В). Конкретный частичный сложный объектный тип данных гложет присутствовать в любом
результирующем множестве только один раз;
[А. [8. С]] = [А. 8. С]. Результирующие множества могут быть вложенными.
8.2 Операторы ограничения супертипов и подтипов
Используя вышеописанный формальный подход, можно переписать ограничения, определенные в выра жениях
для супертипов на языке EXPRESS, а также ограничения на подтипы в терминах результирующих мно
жеств. Преобразования, представленные в В.2.1 — В.2.3, применяются рекурсивно до тех пор. пока не останется
ни одного терма, представляющего супертип
(ONEOF. AND
или
ANDOR).
Данные преобразования не описывают полное содержание выражения супертипов и ограничений подти
пов. в частности, условий
ONEOF
и
TOTAL_OVER.
Для этого требуется полный алгоритм, представленный в В.З.
В.2.1 ONEOF
Список оператора
ONEOF
преобразуется в результирующ ее множество, содержащее варианты выбора
оператора
ONEOF.
то есть:
ONEOF (А.
8 ....) - [А. 8 ....]
В. 2.2 AND
Оператор
AND
эквивалентен оператору & и оперирует с частичными сложными объектными типами дан
ных или с результирующими множествами с целью создания частичного сложного объектного типа данных или
результирующего множества.
A AND 8
— [А Л 8]
A AND ONEOF (В1, В2)
- А Л [8 1 .8 2 ] = [А Л 81. А Л 82]
ONEOF (А1, А2) AND ONEOF (В1.В2)
- [А1. А2] А [81. 82] = [А 1А 81. А 1А В2. А 2А 81. A 2A 82]
В. 2.3 ANDOR
Оператор
ANDOR
создает результирующее множество, содержащее все операнды по отдельности и опе ранды,
объединенные оператором & . Оператор
ANDOR
оперирует с частичными сложными объектными типами
данных или результирующими множествами.
A ANDOR 8
- [ А . 8. АЛ В]
A ANDOR 0NE0F(8f, 82)
- [А. [81. 82]. А Л [81. 82] ] = [А. 81. 82. А Л 81. АЛ 82]
ONEOF (А1. А2) ANDOR ONEOF (Bf. 82)
- [ [А1. A 2 ]. [8 1 .8 2 ]. [A1. A2] A [81. 82]] =
[A1. A2. 81. 82. А 1Л 8 1. А 1Л 8 2. А 2Л 8 1. A 2A 82]
B.2.4 Приоритет операторов
Вычисление результирующих множеств проводится слева направо. При этом операторы, имеющие высший
приоритет, выполняются первыми в соответствии с 9.2.5.5.
Пример — Нижеприведенное выражение вычисляется следующим образом:
A ANDOR В and С — [А. [8А С]. А Л [S A С] ] = [А. 8 Л С, А Л 8 А С]
В.З Интерпретация возможных типов данных сложных объектов
Интерпретация выражений супертипов и ограничений подтипов с дополнительной инфорхгацией, ихгею-
щейся в объявленной структуре, позволяет разработчику EXPRESS-схемы определить сложные объектные типы
данных, которые могут быть реализованы, исходя из данных объявлений. Для того, чтобы обеспечить данное
определение может быть создано результирующ ее множество сложных объектных типов данных для графа
подтилоа’супертипов. Для этого определим следующие термины:
подтип с множественным наследованием
(multiply inheriting subtype): Подтипом с множественным на
следованием является подтип, в объявлении которого указаны два или более супертипов.
128