Статус документа
Статус документа

ГОСТ Р ИСО 10303-11-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 11. Методы описания. Справочное руководство по языку EXPRESS

ПРИЛОЖЕНИЕ С
(обязательное)

     
Ограничения на экземпляры, налагаемые спецификацией интерфейса


Когда импортируются сложные графы подтип/супертип, допустимые типы данных сложных объектов вычисляются с использованием расширений правил, описанных в разделе 11 и в приложении В. За счет того, что определяются только те объекты, которые необходимы в данной схеме, граф подтип/супертип, определенный в одной или нескольких других схемах, может быть усечен для использования в данной схеме.

В настоящем приложении заданы правила, необходимые для разложения графов подтип/супертип в том случае, если один или несколько типов данных объектов, присутствующих в исходных графах, не импортируются. Такие пропущенные типы данных объектов оставляют пустоты в выражениях супертипов. В настоящем приложении такие пустоты обозначаются как <>. Для удаления пустот из выражения супертипа используются следующие преобразования:

- ONEOF(A,<>, ...) ONEOF(A, ...)

- ONEOF(<>) <>

- ONEOF(A) А

- A AND <> ONEOF (A, А)

- A ANDOR <> A

Обработка оператором AND гарантирует, что те типы данных объектов, которые в исходной схеме обязательно должны комбинироваться, не будут присутствовать в данной схеме (обеспечивается оператором ONEOF(A, А)), если сочетаемые с ними типы данных объектов не импортированы.

Результирующее множество допустимых типов данных сложных объектов для схемы, связанной с другими схемами, вычисляется по следующему алгоритму:

a) Создается полный пул объектов для данной схемы. Полный пул объектов состоит из:

1) всех объектов, определенных в данной схеме;

2) всех объектов, импортированных в данную схему с помощью спецификаций USE и REFERENCE;

3) всех объектов, неявно импортированных в данную схему.

Примечание 1 - Полный пул объектов может содержать несколько объектов с одинаковым именем (в случае их неявного импортирования из разных схем) или может включать один и тот же объект под разными именами (когда этот объект был переименован при импорте посредством выражения USE FROM... AS). В первом случае пул будет содержать каждый объект, имеющий идентичное имя. Во втором же случае пул будет содержать только один объект, несмотря на одновременное наличие у него нескольких имен.

b) Для каждого супертипа из пула объектов сокращают выражение супертипа, удаляя все ссылки на объекты, отсутствующие в пуле объектов. Повторно применяют описанные выше преобразования для удаления образовавшихся пустот и получают правильное выражение супертипа, ссылающееся только на объекты из пула объектов.

c) Для каждого супертипа из пула объектов выписывают полное выражение супертипа, включающее неявные ограничения ANDOR с подтипами, не указанными в выражении супертипа.

Примечание 2 - Неявные ограничения ANDOR включают как подтипы, добавленные в схемах, отличных от объявленной схемы, так и подтипы из объявленной схемы, которые не вошли в выражение супертипа.

d) Вычисляют результирующее множество в соответствии с алгоритмом, описанным в приложении В, начиная с шага с).

Для типа данных сложного объекта из результирующего множества, который содержит по крайней мере один локально объявленный или импортированный с помощью спецификации USE объект, могут быть созданы независимые экземпляры. Для типа данных сложного объекта, не содержащего таких объектов, независимые экземпляры в данной схеме не могут быть созданы.

Примечание 3 - Если имеется явно импортированный объект, который не присутствует ни в каком типе данных сложного объекта из полученного результирующего множества, для такого объекта экземпляры не могут быть созданы вообще. Это означает ошибку при импорте данного объекта.


Примеры:

158 - Схема example (см. пример 155 из приложения В) используется для демонстрации алгоритма.

SCHEMA test;

USE FROM example (1);

REFERENCE FROM example (m);

END_SCHEMA;