Третий манифест Кристофера Дейта и Хью Дарвена



         

Третий манифест Кристофера Дейта и Хью Дарвена: предпосылки и обзор - часть 10


Но достаточно часто либо (a) понятие класса нагружается еще и смыслом "контейнера", хранящего все существующие экземпляры (объекты) класса, либо (b) одновременно поддерживаются понятия и типа данных, и класса объекта в разных смыслах. И это только небольшая часть возражений, которые я мог бы предъявить Д&Д от имени "объектного мира".

Relvars и объектные классы

В предыдущем разделе был поставлен знак равенства между объектными классами и доменами. Однако многие считают, что объектным классам соответствуют relvars. Д&Д считают это серьезной логической ошибкой. Из чего она проистекает?

Рассмотрим следующее определение класса на гипотетическом объектном языке:

CREATE OBJECT CLASS EMP ( EMP# CHAR (5) , ENAME CHAR (20) , SAL NUMERIC , HOBBY CHAR (20) , WORKS_FOR CHAR (20) ) … ;

Здесь EMP#, ENAME и т.д. - это переменные экземпляра (называемые также членами или атрибутами), значения которых в каждом "экземпляре" класса EMP в любой момент времени составляют общее значение этого экземпляра в данный момент времени. В "чистой" объектной системе эти переменные экземпляра являются частными (т.е. скрытыми от пользователя), но в следующем ниже обсуждении предполагается, что они "публичные".

Вообще говоря, это не является принципиальным. Во многих объектных системах объявление публичной переменной экземпляра трактуется как неявное определение двух неявных методов соответствующего класса "get" и "set" для каждой такой переменной. Если говорить не слишком строго, то при использовании надлежащего подхода наличие публичных переменных не противоречит принципам инкапсуляции.

Теперь рассмотрим простое реляционное определение relvar на языке SQL:

CREATE TABLE EMP ( EMP# CHAR (5) , ENAME CHAR (20) , SAL NUMERIC , HOBBY CHAR (20) , WORKS_FOR CHAR (20) ) ;

Эти два определения выглядят очень похоже, наводя на мысль, что определяется одно и то же. Однако второе определение допускает ряд возможных расширений (приводимые расширения основаны на конкретном коммерческом продукте, название которого Д&Д не оглашают, но судя по общему направлению дискуссии, это Informix Universal Server).




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