Пояснения

Слайд 48. Наследование

 

 

В языке EXPRESS сущность определяется как класс объектов реального мира, имеющих общие характеристики. Таким классом, например, могут быть люди, причем каждый человек имеет имя, фамилию и неотрицательный возраст. Кроме того, могут существовать подклассы данного класса, в которых объекты, помимо характеристик класса, обладают еще некоторым набором характеристик, принадлежащих только данному подклассу. Например, для сущности «Человек» может существовать подкласс «Работник», который является человеком и обладает всеми свойствами человека, но, кроме того, имеет специфические свойства, скажем, должность. Должность имеется не у каждого человека, а только у тех, кто работает. Таким образом, экземпляры сущности «Работник» составляют подмножество экземпляров сущности «Человек» и каждый экземпляр «Работника» является одновременно экземпляром «Человека».

Поскольку сущности «Человек» и «Работник» обладают частично совпадающими свойствами, то при их объявлении в информационной модели по отдельности пришлось бы повторять все объявления свойств сущности «Человек» в объявлении сущности «Работник». Для того, чтобы избежать этого, в EXPRESS введено отношение наследования. Это отношение устанавливает связь между сущностями, при которой области экземпляров одних сущностей, называемых потомками, являются подмножествами областей экземпляров других сущностей, называемых предками. Другими словами, потомки являются специализациями предков. В данном случае, сущность «Работник» будет потомком сущности «Человек». Это позволяет объявлять все свойства только один раз: все общие свойства для человека и работника объявляются в сущности «Человек», а свойства, специфические для работника – в сущности «Работник».

В приведенном примере присутствуют две сущности – «person» (человек) и «employee» (работник). Между ними установлено отношение наследования, т.е. область экземпляров сущности «employee» (потомка) является подмножеством области экземпляров сущности «person» (предка). Предок имеет три атрибута – «first_name» (имя), «last_name» (фамилия) и «age» (возраст), а также одно ограничение, определяющее, что значение атрибута «age» должно быть неотрицательным. Потомки получают (наследуют) все свойства (т.е. атрибуты и ограничения) предков. В данном случае, сущность «employee» наследует три атрибута и одно ограничение сущности «person». Кроме того, потомки могут добавлять к унаследованным свойствам новые, а также переопределять некоторые унаследованные свойства. Сущность «employee» не переопределяет никакие родительские свойства, но добавляет два новых свойства: атрибут «title» (должность) и ограничение, определяющее, что значение атрибута «age» должно быть не меньше 16. При этом потомок все равно остается подмножеством предка, а экземпляр потомка (работник) всегда будет являться и экземпляром предка (человеком).

Существует два способа задания отношения наследования: путем спецификации потомков в объявлении предка или путем спецификации предков в объявлении потомка. В данном случае используется второй способ: в объявлении потомка (сущности «employee») используется конструкция SUBTYPE OF, предназначенная для спецификации предка. После этой конструкции в скобках перечисляются все предки данной сущности (в этом случае, только сущность «person»).

Помимо простого наследования, показанного на примере, язык EXPRESS допускает множественное наследование, в котором участвуют более двух сущностей.


Слайд 49. Интерфейс между схемами