Скачиваний:
82
Добавлен:
02.05.2014
Размер:
2.28 Mб
Скачать

19.9. Пересмотр специализации ограничением

Продолжая начатое в предыдущем разделе обсуждение, рассмотрим небольшое, но существенное дополнение. Обратимся к следующему примеру: "Пусть тип CIRCLE имеет собственный подтип COLORED CIRCLE (Цветная окружность)". При этом подразумевается, что "цветные окружности" являются частным случаем окружностей вообще. Примеры такого рода весьма распространены в литературе. До сих пор мы говорили, что считаем их крайне неубедительными и даже в некотором отношении вводящими в заблуждение. Если говорить конкретно, то в данном случае, по нашему мнению, не имеет смысла рас- сматривать цветные окружности как отдельный случай окружностей в целом. В конце концов, "цветные окружности" по определению должны быть изображениями, напри- мер, на экране дисплея, в то время как окружности вообще представляют собой геомет- рические фигуры, а не изображения. Поэтому представляется более разумным считать тип COLORED CIRCLE не подтипом типа CIRCLE, а совершенно самостоятельным типом. Такой независимый тип мог бы иметь возможное представление, в котором один ком- понент имел бы тип CIRCLE, а другой — тип COLOR, но, повторяем, он ни в коем случае не являлся бы подтипом типа CIRCLE.

Наследование возможных представлений

Рассмотрим конкретные аргументы в пользу нашей позиции по предыдущему вопро- су. Возвратимся на некоторое время к уже знакомому нам примеру с эллипсами и ок- ружностями. Еще раз приведем сокращенные определения типов.

TYPE ELLIPSE POSSREP ( A LENGTH, В LENGTH, CTR POINT ) ... ; TYPE CIRCLE POSSREP ( R LENGTH, CTR POINT ) ... ;

Обратите внимание, что эллипсы и окружности имеют различные объявляемые возможные представления. Однако возможное представление для эллипсов являет- ся — обязательно, хотя и неявно — возможным представлением и для окружностей, поскольку окружности являются эллипсами. Таким образом, окружности могут "возможно, представляться" своими полуосями а и b (и центром), хотя на самом деле их полуоси будут равны одному и тому же значению. Обратное, конечно, не верно, т.е. возможное представление для окружностей не обязательно является возможным представлением для эллипсов.

Отсюда следует, что мы могли бы считать возможные представления и ограничения до- полнительными "свойствами", которые наследуются окружностями от эллипсов или, гово-

ря в более общем плане, подтипами от супертипов9. Но (возвращаясь к окружностям и цветным окружностям) очевидно, что объявленное возможное представление для типа CIRCLE не является возможным представлением для типа COLORED_CIRCLE, поскольку в нем нет ничего, что могло бы представлять цвет! Это говорит о том, что цветные окружности не являются окружностями в том же смысле, что и, например, окружности и эллипсы.

Действительный смысл понятия подтипа

Следующий аргумент связан с предыдущим, но он логически является более строгим. Не существует способа получения какой-либо цветной окружности из некоторой ок- ружности посредством специализации по ограничениям.

Для объяснения этого утверждения опять возвратимся к примеру с эллипсами и ок- ружностями. Ниже вновь приведены соответствующие определения типов.

TYPE ELLIPSE POSSREP ( A LENGTH, В LENGTH, CTR POINT ) ...

CONSTRAINT ( THE_A { ELLIPSE j > THE_B ( ELLIPSE ) ) ;

TYPE CIRCLE POSSREP ( R LENGTH, CTR POINT ) SUBTYPE OF ( ELLIPSE }

CONSTRAINT ( THE_A ( CIRCLE ) = THE_B ( CIRCLE ) ) ;

Как мы видели ранее, фраза CONSTRAINT для типа CIRCLE гарантирует, что эллипс с . равными полуосями а = Ь будет автоматически специализирован к типу CIRCLE. Но в случае цветных окружностей и вообще окружностей нет каких-либо предложений CONSTRAINT, которые можно было бы записать в определении типа COLORED CIRCLE и ко- торые по аналогии со случаем с эллипсами и окружностями позволили бы специализиро- вать некоторую окружность к типу C0L0RED_CIRCLE. Иными словами, нет ограничений типа, которые можно было бы сформулировать таким образом, что если бы им удовле- творяла некоторая данная окружность, то это прямо означало бы, что она в действитель- ности является цветной.

Поэтому, опять же, представляется более разумным считать типы COLORED CIRCLE и CIRCLE совершенно разными типами и, в частности, считать, что тип COLORED CIRCLE имеет возможное представление, в котором один компонент относится к типу CIRCLE, а другой — к типу COLOR. В последнем случае данному типу можно дать следующее определение.

TYPE COLORED_CIRCLE POSSREP ( CIR CIRCLE, COL COLOR ) ... ;

На самом деле мы здесь затронули вопрос, который можно поставить гораздо шире. Фактически мы считаем, что определение подтипов должно всегда задаваться через спе- циализацию по ограничениям! Наше предложение заключается в том, что, если тип

Т' — это подтип типа Т, всегда должно существовать такое ограничение типа, что если оно удовлетворяется некоторым заданным значением типа Т, то рассматри- ваемое значение на самом деле является некоторым значением типа Т' (и должно быть автоматически специализировано к типу Т'). Предположим, что Т и Т' — некото- рые типы и I" — подтип типа Т (не нарушая общности, можно считать, что Т' — это не- посредственный подтип типа Т). Тогда будут справедливы следующие рассуждения.

  • Типы Т и Т' — это, по существу, множества (именованные множества значений), и Т' является подмножеством Т.

  • Следовательно, типы т и Т' оба имеют предикаты члена множества, т.е. такие предикаты, что их значения являются членами данного множества (поэтому и зна- чениями данного типа) тогда и только тогда, когда они удовлетворяют данному предикату. Пусть такими предикатами будут соответственно Р и Р'.

  • Заметим, что предикат Р' по определению при вычислении дает значение истина только для значений из числа действительно относящихся к типу Т. Поэтому он может быть сформулирован не только в терминах значений типа Т', айв терми- нах значений типа Т.

  • Именно такой предикат Р', сформулированный в терминах значений типа Т, и является ограничением, которому должны удовлетворять значения типа Т, чтобы фактически являться значениями типа Т'. Иными словами, некоторое значение типа Т специализируется именно к типу Т', если оно удовлетворяет ограничению Р'.

Поэтому мы утверждаем, что специализация по ограничениям является единствен- ным концептуально допустимым средством определения подтипов. Вследствие этого мы не признаем примеров, подобных предлагаемому, в котором тип COLORED_CIRCLE может быть подтипом типа CIRCLE.

Соседние файлы в папке Дейт К. Дж. Введение в системы баз данных [7 издание]