Пояснения

Слайд 44. Атрибут сущности

Пояснения

 

Понятие «сущность» (ENTITY) выражает понятие, существенное для моделируемой предметной области и является основным элементом языка EXPRESS. Каждая сущность имеет уникальный в рамках схемы идентификатор (т.е. имя). Основные свойства сущности задаются с помощью ее атрибутов. Кроме того, свойства сущности могут быть заданы с помощью ее локальных правил. В EXPRESS существует возможность определять отношение наследования между двумя и более сущностями. При наследовании сущность-потомок получает все свойства (в том числе и атрибуты) сущности предка.

Объявление сущности начинается с ключевого слова ENTITY, после которого идет имя сущности. Затем могут следовать конструкции, задающие отношение наследования между сущностями, затем объявления атрибутов, объявления локальных правил сущности и, наконец, объявление сущности завершается ключевым словом END_ENTITY.


 

 

Понятие «атрибут» выражает важную черту, качество или свойство сущности. В экземпляре сущности каждому атрибуту может быть присвоено некоторое значение, характеризующее данный экземпляр. Каждый атрибут сущности имеет имя, которое должно быть уникальным в рамках сущности. Имя атрибута обозначает роль, которую играет значение атрибута в контексте сущности. Например, для сущности, выражающей геометрическую точку, атрибут, имеющий в качестве своего значения первую координату точки в пространстве, логично обозначить буквой «x». Область возможных значений атрибута задается путем спецификации типа данных атрибута. Например, для уже упомянутого атрибута «x» типом данных лучше всего избрать вещественный тип REAL. Всего в EXPRESS существует три вида атрибутов сущности: явный, вычисляемый и инверсный. Первые два из них будут рассмотрены подробно.

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

На примере приведено объявление сущности «circle» (окружность), имеющей явный атрибут «radius» (радиус). Данный атрибут имеет вещественный тип REAL. В тех случаях, когда значение атрибута может отсутствовать для некоторых экземпляров сущности, атрибут должен быть объявлен с применением ключевого слова «OPTIONAL», что говорит о необязательности присутствия его значения. В приведенном примере - это атрибут «color» (цвет). Когда значение такого атрибута действительно отсутствует, значением атрибута считается неопределенное значение «?».

В отличие от значения явного атрибута сущности, значение вычисляемого атрибута сущности определяется не в явном виде, а путем вычисления некоторого выражения. Это может понадобиться в тех случаях, когда значение атрибута должно быть вычислено на основании уже имеющихся в модели значений других атрибутов. Все вычисляемые атрибуты сущности объявляются в единой конструкции «DERIVE», которая должна идти непосредственно после объявлений явных атрибутов сущности. При этом каждый вычисляемый атрибут объявляется отдельно. Каждое объявление вычисляемого атрибута задает уникальное в рамках сущности имя атрибута, а также тип атрибута и выражение для вычисления значения атрибута. На примере у сущности «circle», есть также два вычисляемых атрибута «area» (площадь) и «perimeter» (периметр). Оба вычисляемых атрибута объявлены в конструкции «DERIVE». При объявлении вычисляемого атрибута, первым указывается его имя, затем, через двоеточие, его тип, а затем, через двоеточие и знак равенства, выражение для вычисления значения атрибута. В данном случае у обоих вычисляемых атрибутов сущности присутствуют ссылки на единственный явный атрибут сущности «radius», а также ссылки на встроенную константу EXPRESS «PI», выражающую число p.