Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций.doc
Скачиваний:
46
Добавлен:
15.05.2015
Размер:
567.3 Кб
Скачать

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

Пояснения

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

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

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

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

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