ГОСТ Р И С 0 10303-11 — 2009
должна разрешаться посредством добавления к идентификатору префикса с именем супертипа, от которо
го унаследован каждый из атрибутов.
Пример — В данном примере показано, как объект е12 наследует два атрибута с одинако
выми именами attr. а для того, чтобы указать, для какого из двух атрибутов задается ограниче ние,
к его имени добавляется префикс.
ENTITY е1;
attr : REAL:
END_ ENTITY;
ENTITY e2:
attr : BINARY:
END_ENTITY;
ENTITY e12
SUBTYPE OF (el.e2);
WHERE
positive : SELF\e1.attr>0.0; — атрибут attr, объявленный вe1
END_ENTITY;
Подтип может наследовать один и тот же атрибут от разных супертипов, которые в свою очередь
унаследовали его от одного супертипа. Это называется повторным наследованием. В данном случае под
тип наследует атрибут только один раз, то есть существует только одно значение для данного атрибута в
экземпляреданного объектного типаданных.
9.2.3.4 Повторноеобъявление атрибута
Атрибут, объявленный в супертипе, может быть повторно объявлен в подтипе. Атрибут остается в
супертипе, но допустимая область значений для данного атрибута определяется повторным объявлением,
заданным в подтипе.
Первоначальное объявление может быть изменено тремя основными способами:
- атрибуту может быть присвоенодругое имя;
- типданных атрибута может быть изменен конкретизацией исходного типа данных (см. 9.2.7).
Пример— Атрибут типа данных NUMBER может быть измененна тип данных INTEGER или REAL;
- если исходным типомданныхатрибута является определенный тип данных, основанный на выбира
емом типе данных, то он может быть изменен другим списком выбора, определяющим подмножество или
конкретизацию элементов исходного списка выбора, либо конкретизацией одного из элементов исходного
типа выбора;
- необязательный атрибут в супертипе может быть изменен на обязательный атрибут в подтипе;
- явный атрибут всупертипе может быть изменен на вычисляемый атрибут в подтипе;
- атрибуту всупертипе может быть присвоен новый идентификатор в подтипе. Новый идентификатор
подчиняется всей области видимости и правилам видимости, определенным вразделе 10,для идентифика
тора атрибута подтипа, объявление которого содержитданное повторноеобъявление; но данный идентифи
катор всегда относится также и к исходному атрибуту в супертипе.
П р и м е ч а н и е — Объявление нового идентификатора не удаляет старый идентификатор из области
видимости имен. Старый идентификатор остается доступным в своем объектном типе данных и в любых подти
пах. объявленных для данного объектного типа данных.
Синтаксис:
279 redeclared_attribute = qualified_attribute [ RENAMED attributejd ].
275 qualified_attribute = SELF group_qualifierattribute_qualifier.
232group_qualifier = ‘\’entity_ref.
179attribute_qualifier = 1."attribiite_ref.
Правила и ограничения:
а)Типданных в повторном объявлениидолжен совпадать или являться конкретизацией типа данных
атрибута, объявленного всупертипе. Применяются правила конкретизации по 9.2.7.
37