Программирование >>  Хронологические базы данных 

1 ... 242 243 244 [ 245 ] 246 247 248 ... 348


Как указывалось в разделе 19.9, мы придерживаемся мнения, что специализация ограничением - это единственный логически допустимый способ определения подтипов. Поэтому интересно отметить, что объектный мир (по крайней мере, часть его обитателей) занимает прямо противоположную позицию. Процитируем автора настоящей публикации: Класс SQUARE - это подкласс класса RECTANGLE? ...Растяжение прямоугольника по оси X вполне допустимо. Но если то же самое сделать с квадратом, он перестанет быть квадратом. Концептуально это не обязательно плохо. Когда вы вытягиваете квадрат, получается прямоугольник... Но... большинство объектно-ориентированных языков не допускают, чтобы объекты меняли свой класс... Поэтому предлагается следующий принцип проектирования для систем классификации: Подкласс не должен быть определен через ограничения суперкласса .

Замечание. Как объясняется в главе 24, в объектном мире часто используется термин класс для понятия, которое мы называем типом.

Нас поражает, что автор принимает указанную позицию просто потому, что объектно-ориентированные языки не допускают, чтобы объекты меняли свой класс . Мы бы скорее побеспокоились о получении, прежде всего, правильной модели, а не о соответствии конкретной реализации. 19.10.Taivalsaari А. On the Notion of Inheritance ACM Сотр. Surv. - September, 1996. -28, №3.

19.11. Zdonik S.B., Maier D. Fundamentals of Object-Oriented Databases в [24.52]).

Ответы к некоторы1У1 упражнения]У1

19.3. Рассмотрим лишь п. е (значение и переменная), поскольку это фундаментальные понятия и они еще явно нигде в книге не рассматривались. (Следующие определения взяты из [3.3].)

Значение- это отдельная константа (например, отдельная константа 3 ). Значение не имеет никакого места расположения во времени или пространстве. Однако значения могут иметь в памяти некоторые кодированные представления, и такие представления, конечно, имеют место расположения во времени и пространстве (см. следующий абзац). Отметим, что по определению значение не может быть изменено. Иначе, если бы это было возможно, после такого изменения оно бы не было больше таким значением (вообще).

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

Кстати заметим следующее: важно понимать, что значение не обязательно должно быть таким же простым, как целое число 3 . Наоборот, значения могут быть сколь угодно сложными. Например, значение может быть массивом, стеком, списком, отношением, геометрической точкой, эллипсом, Х-лучом, документом, отпечатком пальца и т.д. Аналогичное замечание, конечно, справедливо и для переменных.



19.4. Наименее конкретный тип любого значения любого типа, показанный на рис. 19.1, - это, конечно, PLANE FIGURE.

19.5. Всего 22 иерархии. В их число включена и пустая иерархия.

19.6. Исходя из того, что все прямоугольники имеют центр в начале координат, каждый заданный прямоугольник может однозначно идентифицироваться любыми двумя смежными вершинами (скажем, А и В), а заданный квадрат может однозначно идентифицироваться любой отдельной вершиной (скажем. А). Чтобы определиться более точно, будем считать, что А - вершина в правом верхнем квадранте плоскости (х > О, у > 0), а В- вершина в ее правом нижнем квадранте (х > О, у < 0). Тогда типы RECTANGLE и SQUARE можно определить следующим образом.

TYPE RECTANGLE POSSREP ( А POINT, В POINT )

TYPE SQUARE POSSREP ( A POINT )

CONSTRAINT ( THE X ( THE A ( SQUARE ) ) =

- THE Y ( THE B ( SQUARE ) ) AND

THE Y ( THE A ( SQUARE ) ) =

THE X ( THE B ( SQUARE ) ) ) ;

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

OPERATOR ROTATE ( R RECTANGLE VERSION ROTATE RECTANGLE ; BEGIN ;

VAR P POINT ;

VAR Q POINT ;

P := THE A ( R ) ;

Q := THE В ( R

UPDATES ( R )

THE X ( THE Y ( THE X ( THE Y ( RETURN END ; END OPERATOR

THE A THE A THE B THE В

l A ( R ) )

l A ( R ) )

l B ( R ) )

= THE Y = THE X = THE Y = THE X

X ( P )

( p ) ;

19.8.

OPERATOR ROTATE ( S SQUARE ) UPDATES

VERSION ROTATEJQUARE ;

RETURN ; END OPERATOR ;

a) Указанное выражение приведет к ошибке несоответствия типа во время компиляции, поскольку для оператора THE R требуется, чтобы аргумент имел тип CIRCLE, а объявленный тип атрибута А был ELLIPSE, а не CIRCLE. (Конечно, если проверка типа во время компиляции будет отсутствовать, мы получим ошибку



типа во время выполнения, как только встретится кортеж, в котором значение атрибута А будет просто эллипсом, а не окружностью.)

б) Указанное выражение допустимо, однако оно дает в результате отношение с таким же заголовком, как и заголовок переменной-отношения R, но в этом отношении объявленный тип атрибута А - CIRCLE, а не ELLIPSE.

19.9. Выражение служит сокрашенной записью выражения такого вида.

( ( EXTEND ( R ) ADD ( TREAT DOWN AS T ( А ) ) AS А )

{ ALL BUT A } RENAME A AS A

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

19.10. Выражение служит сокращенной записью выражения такого вида. ( R WHERE IS T ( А ) ) TREAT DOWN AS T ( А )

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



1 ... 242 243 244 [ 245 ] 246 247 248 ... 348

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика