Атрибуты типа данных ENTITY представляют особенности, качества или свойства присущие объекту. Объявление атрибутов устанавливает взаимосвязь между типом данных ENTITY и типом данных, представляемым атрибутом.
Имя атрибута представляет роль, исполняемую ассоциированным с ним значением в контексте объекта, в котором оно используется.
Существуют три вида атрибутов:
- явный атрибут, то есть атрибут, значение которого должно быть определено реализацией при создании экземпляра объекта;
- вычисляемый атрибут, то есть атрибут, значение которого вычисляется некоторым способом;
- инверсный атрибут, то есть атрибут, значение которого состоит из экземпляров объекта, использующих данный объект в определенной роли.
Каждый атрибут устанавливает взаимосвязь между экземпляром объявляющего объектного типа данных и некоторым другим экземпляром или экземплярами. Атрибут, представленный не агрегированным типом данных, устанавливает простую взаимосвязь с этим типом данных. Атрибут, представленный агрегированным типом данных, устанавливает как групповые взаимосвязи со значениями агрегированной структуры, так и дистрибутивные взаимосвязи с элементами данных значений агрегированной структуры. Кроме того, каждый атрибут устанавливает неявную инверсную взаимосвязь между основным типом данных и объявляющим объектным типом данных.
Примечание - Дальнейшее обсуждение данных взаимосвязей приведено в приложении G.
9.2.1.1 Явный атрибут
Явный атрибут представляет свойство, значение которого должно быть обеспечено реализацией при создании экземпляра. Каждый явный атрибут определяет отдельное свойство. Объявление явного атрибута создает один или несколько явных атрибутов, имеющих указанную область определения, и назначает каждому из них идентификатор.
Синтаксис: |
Примечание - Синтаксис объекта redeclared_attribute обеспечивает повторное определение атрибута, установленное в 9.2.3.4.
Правила и ограничения:
a) Если явный атрибут не объявлен как OPTIONAL, то каждый экземпляр объектного типа данных должен иметь значение для данного атрибута.
Примечание - Если типом данных явного атрибута является наращиваемый перечисляемый тип данных, для которого не заданы элементы перечисления, то такой объект не может быть реализован, если только какое-нибудь расширение перечисляемого типа, содержащее, по крайней мере, один элемент перечисления, не будет объявлено. Если типом данных явного атрибута является наращиваемый выбираемый тип данных, для которого не заданы элементы списка выбора, то такой объект не может быть реализован, если только какое-нибудь расширение выбираемого типа, содержащее, по крайней мере, один именованный тип, не будет объявлено.
b) Ключевое слово OPTIONAL указывает на то, что в конкретном экземпляре объекта данный атрибут не обязательно должен иметь значение. Если атрибут не имеет значения, то считается, что он имеет неопределенное (?) значение.
c) Явный атрибут не должен объявляться ни явно, ни косвенно как имеющий тип данных GENERIC.
Примечания
1 Данное правило справедливо, несмотря на то, что такое объявление допускается синтаксисом.
2 Ключевое слово OPTIONAL указывает, что данный атрибут всегда является значимым для экземпляров данного объектного типа, но при этом для некоторых экземпляров он может не иметь значения, соответствующего роли, определяемой данным атрибутом. Ключевое слово OPTIONAL не указывает на то, что атрибут является значимым только для некоторых экземпляров объектного типа данных. Ситуация, при которой атрибут не является значимым для некоторых экземпляров, должным образом моделируется путем определения подтипов (см. 9.2.3).
3 Необходимо обратить внимание на ссылки на необязательные атрибуты, особенно в правилах, поскольку такие атрибуты могут не иметь значения. Встроенная функция EXISTS может использоваться для определения существования значения атрибута, а встроенная функция NVL позволяет обеспечить значение по умолчанию для вычислений. Если ни одна из данных функций не используется, то могут получиться непредсказуемые результаты.
Пример - Следующие объявления эквивалентны:
ENTITY point;
х, у, z : REAL;
END ENTITY;
ENTITY point;
x : REAL;
у : REAL;
z : REAL;
END ENTITY;
9.2.1.2 Вычисляемый атрибут
Вычисляемый атрибут представляет свойство, значение которого определяется посредством вычисления значения выражения. Вычисляемые атрибуты объявляются после ключевого слова DERIVE. Объявление состоит из идентификатора атрибута, типа его представления и выражения, которое должно использоваться для вычисления значения атрибута.