ГОСТ Р И С 0 10303-11 — 2009
9.2.5 Ограничения лодтипов/супертипов
Экземпляр объектного типа данных, объявленный явно или неявно как супертип (см. 9.2.3.2). может
также являться экземпляром одного или нескольких из его подтипов (см. Н.2).
Синтаксис:
319 supertype_constraint = abstract_entity_declaration |
abstract_supertype_declaration |supertype_mle.
164 abstract_entity_declaration = ABSTRACT.
166 abstract_supertype_declaration = ABSTRACT SUPERTYPE ( subtype_constraint ].
313subtype_constraint = OF ’(’ supertype_express»on ’ )’.
320 supertype_expression = supertype_factor {ANDOR supertype_factor}.
321 supertype_factor = supertype_term ( AND supertypejerm}.
323supertypejerm = enlity_ref |one_of | , (, supertype_expression’ )’.
263one_of = ONEOF ’(’ supertype_expressionsupertype_expression.
322 supertype_rule = SUPERTYPE subtype_constraint.
Имеется возможность определить ограничения, в соответствии с которыми могут быть реализованы
графы лодтиповУсупертилов. Данныеограничения могутбыть определены в объявлении супертипа посред
ством условия SUPERTYPE. Они могуттакже быть определены какотдельные правила посредством объяв
лений SUBTYPE_CONSTRAINT (см. 9.7).
П р и м е ч а н и е — Для того, чтобы существующие схемы, разработанные в соответствии с первой
редакцией справочного руководства по языку EXPRESS, оставались допустимыми, объявление ограничений на
подтипы/супертипы, в котором при объявлении объекта используются ключевые слова ONEOF. ANDOR или
AND. остается допустимым по отношению к настоящему стандарту. Однако, данный способ объявления
нежелателен, поскольку в последующих редакциях стандарта планируется его запрет. Рекомендуется
использовать объявление SUBTYPE_CONSTRAINT.
Объявление SUBTYPE_CONSTRAINT содержит совокупность ограничений, установленных в выра
жении supertype_expression. Объявление SUBTYPE_CONSTRAINT может содержать любое число огра
ничений AND и ONEOF, каждое из которых интерпретируется как отдельное ограничение.
Кроме того, при включении в формулировку какого-либо более сложного ограничения каждое выра
жение ONEOF. AND и ANDOR интерпретируется как совокупность экземпляров супертипа. При интерпре
тации выражения supertype_expression применяют следующие правила:
- имя объектного типа данных, встретившееся где-либо в выражении supertype_expression. интер
претируется как множество экземпляров объекта, образующих полную совокупностьданного типаданных,
как и в глобальном правиле (см. 9.6);
- результат вычисления выражения supertype_expression интерпретируется как множество экземпля
ров супертипа всоответствии с определенными ниже ограничениями ONEOF. AND и ANDOR.
Несмотря на то. что конечным результатом вычисления выражения supertype_expression для объяв
ления SUBTYPE_CONSTRAINT является множество экземпляров объекта, данное множество не имеет
значения. То есть результат всего выражения supertype_expression не устанавливает никакого ограниче
ния. поскольку он не обязательно содержит все экземпляры супертипа и может содержать экземпляры, к
которым не применяется ни одно из установленных ограничений.
П р и м е ч а н и е — Следовательно, независимые ограничения могут быть связаны оператором ANDOR.
который только добавляет экземпляры к общему (не имеющему значения) результату выражения
supertype_expression.
Формальный подход к определению возможных комбинаций лодтипов/супертипов. которые могут
быть реализованы с учетом некоторых возможных ограничений, определенных ниже, представлен вприло
жении В.
9.2.5.1 Абстрактные супертипы
Язык EXPRESS допускает объявление супертипов, не предназначенных для непосредственной
реализации.Для этого объектный тип данныхдолжен содержать ключевыеслова ABSTRACT SUPERTYPE в
ограничении супертипа. Абстрактный супертип не должен быть реализован, кроме как в сочетании, по
крайней мере, с одним из его подтипов.
П р и м е ч а н и е — Это означает, что схема, содержащая определение абстрактного супертипа без
каких-либо подтипов, является неполной и не может быть реализована, если только подтипы не объявлены
в ссылочной схеме.
41