ГОСТ Р ИСО 10303-11 — 2009
корневой супертип (root supertype): Корневым супертипом являетсясупертип, не являющийся
подтипом.
Результирующее множество R сложныхобъектныхтиповданныхвычисляют по следующему
алгоритму:
a) выявляют все объявления объектов, формирующие граф подтипов/супертипов.
П р и м е ч а н и е — Для сложных графов подтипов/супертипов для выполнения данного действия может
потребоваться несколько итераций;
b
) для каждого супертипа / из графа подтипов/супертипов, в котором объявлено ограничение супертипа
создается конструкция SUBTYPE_CONSTRAINT следующего вида:
SUBTYPE_CONSTRAINT i_superconstraint FOR i;
<supertype_constram t>;
END_SUBTYPE_CONSTRAINT;
в которой элемент <supertype_corvstraint> заменяется ограничением супертипа, объявленным в объекте. Для
целей данного алгоритма следует рассматривать данное ограничение как часть схемы. Кроме того, следует игно
рировать выражение супертипа в объявлении объекта, послужившее основой для данного ограничения подтипа.
П р и м е ч а н и е — На данном шаге ограничения супертипов, объявленные в объекте, преобразуются в
эквивалентные объявления SUBTYPE_CONSTRAINT:
c) для каждого супертипа / из графа подтипов/супертипов выявляются все имеющиеся в данном графе типы
данны х /1 , >2, ... /к , которы е определены как подтипы /, но не встречаю тся в какой-либо конструкции
SUBTYPE_CONSTRAINT, определенной для
i
в данной схеме или сгенерированной на шаге Ь). и создается
конструкция SUBTYPE_CONSTRAINT следующего вида:
SUBTYPE_CONSTRAINT i_othersubtypes FOR i;
j1
ANDOR j2 ANDOR ... ANDOR
jk;
END_SUBTYPE_CONSTRAINT:
Для целей данного алгоритма будем рассматривать данное ограничение как часть схемы;
d) для каждого супертипа г изграфаподтипов/супертиповвыявляютсявсеконструкции
SUBTYPECONSTRA1NT sc1, sc2 ,... sck. в условии FOR которых присутствует /. На данном шаге игнорируются части
ограничений подтипов, содержащие полное покрытие или абстрактные ограничения. Выражения подтипов sxi
данных ограничений объединяются в одну конструкцию SUBTYPE_CONSTRAINT s tiследующего вида: (sx1 ANDOR
sx2 ANDOR sx3 ... ANDOR sxfc);
e) для каждого супертипа
i
из ф аф а подтипов/супертипов генерируется результирующее множество, пред
ставляющее ограничения между его непосредственными подтипами, путем применения преобразований из В.2
и тождеств из В.1 к конструкции SUBTYPE_C0NSTRA1NT
sti,
сформированной на предыдущем шаге по перечисле
нию
d).
Полученный результат объединяется
с
i
посредством оператора & . Если / не определено как ABSTRACT
SUPERTYPE в своем объявлении ENTITY или в какой-либо конструкции SUBTYPE_CONSTRAINT из/, то/добавля
ется к результату с использованием оператора + . Назовем полученное множество Е ,;
f) для каждого корневого супертипа г из графа подтипов/супертипов Е, раскрывается следующим
образом:
1) для каждого подтипа s из г заменяется каждое вхождение (включая вхождения в сложные объектные
типы данных) s в Ег на Es, если это возможно, и применяются преобразования из В.2 и тождества из В.1.
2) рекурсивно повторяется шаг по пункту 1) перечисления f) для каждого s. раскрывая подтипы s до тех пор,
пока не будут достигнуты концевые объекты (для которых не существует Es).
П р и м е ч а н и е — Данная рекурсивная процедура должна завершиться, поскольку в графе подтипов/
супертипов нет циклов;
д) объединяют корневые множества. Создается R = l t El = ЕГ, ♦ £ * + - - то есть R является объединением
множеств, созданных на шаге по перечислению 0;
h) для каждого супертипа s из R и для каждого ограничения подтипа полного покрытия f,. t2
___
tk. определен
ного для s. выполняют следующие действия;
1) пусть t определяется как (/, ANDOR t2 ...ANDOR /к),
2) для всех непосредственных подтипов H3S. не входящих вt2
___
/к. каждое вхождение s, в R заменяется
выражением, полученным из (s, и f) с использованием определений из В.2.2.
3) R преобразовывают в соответствии с преобразованиями, определенными в В.2, и тождествами, опреде
ленными в В.1;
i) для каждого подтипа с множественным наследованием т выполняют следующие действия:
1)для каждого из его непосредственных супертипов s формируют множество R lm ls. содержащее только те
сложные типы данных из R. которые включают как т, так и s.
129