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

       

Свойства R-переменных.


Предполагается, что данные, хранящиеся в этих переменных, всегда актуальны - любое изменение состояний объектов приводит к изменению значений соответствующих R-переменных. Другими словами, данные, представленные в виде значений компонентов объектов, и данные, представленные в виде значений R-переменных - это одни и те же данные (в дальнейшем мы будем говорить о двояком представлении данных).

Рассматривая свойства R-переменных относящихся к типу t (т.е. переменных типа t и переменных компонентов этого типа t.a), надо отметить, что эти переменные существуют вне зависимости от существования объектов данного объектного типа и, тем более, от числа этих объектов. Существование этих переменных определяется в момент создания типа. Таким образом, эти переменные являются глобальными и могут использоваться как операнды непроцедурных команд управления системой, а также в любых определяемых в системе процедурах и функциях.

Такой подход освобождает программиста-пользователя от необходимости производить какие-либо действия по организации группового доступа к данным. Объявление типа t одновременно является объявлением соответствующих R-переменных, данные в которых всегда актуальны. При этом для обозначения R-переменных используются имена, вводимые в процессе объявления и описания типа. Будем называть такие имена многозначными. Необходимая интерпретация многозначных имён определяется операцией, в которой эти имена используются. Например, в операции создания нового объекта new t имя t интерпретируется как имя типа. В операциях же группового доступа к данным, имя t должно интерпретироваться как имя R-переменной.

Замечание. Этот подход освобождает от неоднозначностей, присущих термину "класс", описывающему нечто, что является одновременно и фабрикой объектов (~тип), и хранилищем объектов (~переменная) В нашем изложении этот термин вообще не используется.

Пример. Реализуем объектный тип Warehouse. Он содержит и хранимые, и вычисляемые компоненты. Так, компонент ResourceItems вычисляется как разница между поставленными на данный(this) склад и отгруженными с данного склада количествами.

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