Язык EXPRESS позволяет объявлять объектные типы данных, не предназначенные для непосредственной реализации, а только для реализации через свои подтипы. Абстрактный объектный тип данных может объявить явные или вычисляемые атрибуты, типами данных которых являются обобщенные типы данных (см. 8.5). Эти обобщенные типы данных могут затем быть повторно объявлены как реализуемые типы данных в подтипах абстрактного объектного типа данных. Если подтип абстрактного объектного типа данных сам является абстрактным объектным типом данных, то он не должен повторно объявлять нереализуемые унаследованные атрибуты как реализуемые типы данных. В подтипе абстрактного объектного типа данных, который не является абстрактным объектным типом данных, никакие унаследованные или явно объявленные атрибуты не должны иметь нереализуемый тип данных.
Метки типа (см. 9.5.3.4) могут быть использованы для обеспечения того, что два или более атрибута, типами данных которых являются обобщенные типы данных, имеют одинаковые типы данных на момент обращения.
Правила и ограничения:
a) Объявление абстрактного объектного типа данных содержит ключевое слово ABSTRACT в объявлении объектного типа данных ENTITY, но не содержит ключевое слово SUPERTYPE (понятие ABSTRACT SUPERTYPE определено в 9.5.2.1).
b) Абстрактный объектный тип данных не является реализуемым, если только он не является частью сложного объектного типа данных, все атрибуты которого, имеющие обобщенные типы данных, были объявлены повторно как имеющие реализуемый тип данных.
Примечания
1 Правило по перечислению b) обеспечивает соответствие любого абстрактного объектного типа данных ограничению абстрактного супертипа (см. 9.2.5.1).
2 Повторное объявление может быть осуществлено непосредственно в реализуемом подтипе или в одном из его супертипов (см. 9.2.4).
Пример - В обобщенной модели согласования может потребоваться определить, что может быть согласована группа объектов. Данная модель затем может быть использована в ряде других схем и уточнена в части определения согласования реальных объектов.
ENTITY general_approval ABSTRACT; | |||||
approved_items | : BAG OF GENERIC_ENTITY; | ||||
status | : approval_status; | ||||
END_ENTITY; |