Классика баз данных - статьи

       

Значение вычисляемого атрибута oa определяется


=
DCi . oa, где DCi

. oa =
o.oa.



Переопределение атрибутов.



Значение вычисляемого атрибута oa определяется оператором Ea, ассоциированным с этой переменной. Поскольку этот оператор определен только в реализации схемы объектов класса C, можно предположить, что он может переопределяться в процессе наследования. Отметим, что переопределение, подразумевающее изменение реализации схемы объектов при неизменной спецификации, является одним из способов создания полиморфных[4] систем.

Рассмотрим класс С0 со схемой SC0 = {oa1: R1: C0Ea , oa2:R2,…, oan:Rn}. Атрибут oa1 вычисляется исходя из значений других атрибутов выражением C0Ea, oa1 = C0Ea

(oa2, … , oan). Предположим, что для этого класса определен реляционный оператор E

С0.E(oa1, … , oan)

Рассмотрим иерархию IC0

и входящие в нее классы Сi (i > 0), которые являются наследником класса C0

и имеют схему SCi = { oa1:R1:CiEa, oa2:R2,…, oan:Rn, oa2:R2,…, oan:Rn, oan+1:Rn+1,…, oap:Rp

}. В процессе наследования, выражение, вычисляющее значение атрибута oa1, может быть переопределено, причем, возможно, оно будет учитывать значения атрибутов oan+1,…, oap, отсутствующих в родительском класса C0

oa1 = CiEa

(oa2, … , oap).

Рассмотрим значение С0.oa1

представляющее собой объединение значений атрибутов oa1 объектов класса С0, o О C0

С0.oa1 =


DCi . oa1 , где DCi.oa =


o.oa.                    <28>

Как мы ранее показывали, значение переопределяемого атрибута oa объекта ok любого из классов Ci на уровне хранения будет вычисляться следующим выражением

ok.oa1 = ok.

CiE(oa2, … , oa n, …) OєR'

s(raOID= OIDk) (CiE'a

(A2, … , An, … )) ґ

{a1}                <29>

Выражение, объединяющее значения атрибутов oa всех объектов, созданных как объекты класса Сi, будет выглядеть как

DCi oa1 =

DCi .

CiE(oa2, … , oa n, …) OєR'

s(raOID OFA Ci )( CiE'a


Содержание  Назад  Вперед