Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Глава 4. Объектная модель Cache






Объектная модель Caché разработана в соответствие со стандартом ODMG (Object Data Management Group). Класс – это некий шаблон, в соответствии с которым строятся конкретные экземпляры класса. Объект в Caché имеет определенный тип, т.е. является экземпляром какого-либо класса. Состояние объекта задают значения его свойств, поведение объекта задают его методы (операции). Интерфейс объекта может иметь одну или несколько реализаций. Объектная модель Caché представлена на рис. 4.1.

В Caché реализовано два типа классов:

- классы типов данных (литералы).

- классы объектов (объекты).

Рисунок 4.1. Объектная модель Caché

Классы типов данных задают допустимые значения констант (литералов) и позволяют их контролировать. Каждый объект имеет уникальный идентификатор, в то время как литерал не имеет идентификации, и от него не могут образовываться экземпляры. Классы типов данных имеют предопределенный набор методов проверки и преобразования значений атрибутов. Эти классы не могут содержать свойств.

Классы типов данных подразделяются на два подкласса типов:

- атомарные.

- структурированные.

Атомарными литеральными типами в Caché являются традиционные скалярные типы данных (%String, %Integer, %Float, %Date и др.). В Caché реализованы две структуры классов типов данных – список и массив. Каждый литерал уникально идентифицируется индексом в массиве или порядковым номером в списке.

Классы объектов подразделяются на:

- незарегистрированные

- зарегистрированные.

Объект может существовать в двух формах: в памяти процесса и в виде хранимой версии объекта в базе данных. В соответствии с этим различают два вида ссылок на объект: для идентификации объекта в оперативной памяти используется ссылка OREF (object reference), если же объект сохраняется в базе данных, ему назначается долговременный объектный идентификатор – OID (object ID). Объект получает OID в момент первой записи в базу данных. OID не меняется, пока существует объект. OREF – назначается объекту, когда он попадает в оперативную память. При каждой новой загрузке в оперативную память объект может получить новую объектную ссылку OREF.

Незарегистрированные классы не несут в себе предопределенного поведения, все их методы разработчик делает сам. При этом разработчик сам отвечает за назначение и поддержку уникальных идентификаторов объектов (OID) и объектных ссылок (OREF). Незарегистрированные классы имеют ряд ограничений:

- система не выделяет память для значений свойств объектов.

- отсутствует автоматическая подкачка объектов, на которые делаются ссылки.

- полиморфизм не поддерживается.

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

Зарегистрированные классы, напротив, обеспечены обширным набором встроенных методов, например, таких как %New() для создания экземпляра объекта или %Close() – для удаления его из памяти. Это предопределенное поведение наследуется от системного класса %RegisteredObject. Экземпляры зарегистрированных классов существуют лишь временно в памяти процесса, поэтому их называют временными объектами. Противоположность им составляют встраиваемые и хранимые классы, которые могут длительное время храниться в базе данных. Создание новых зарегистрированных объектов классов и управление ими в оперативной памяти выполняет Caché. При этом программисту предоставляется объектная ссылка на экземпляр объекта, которая позволяет ссылаться на объект в оперативной памяти. Зарегистрированные классы поддерживают полиморфизм.

Сериализуемые (встраиваемые) классы наследуют свое поведение от системного класса %SerialObject и могут длительное время храниться в базе данных. Основной особенностью хранения сериализуемого класса является то, что объекты сериализуемых классов существуют в оперативной памяти как независимые экземпляры, однако могут быть сохранены в базе данных, только будучи встроенными в другой класс. Основным преимуществом использования сериализуемых классов является минимум издержек при изменении структуры классов.

Встроенные объекты представляются в оперативной памяти и базе данных совершенно по-разному:

- в оперативной памяти этот объект ничем не отличается от других объектов;

- на него указывает объектная ссылка – OREF;

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

Хранимые классы наследуют свое поведение от системного класса %Persistent. %Persistent предоставляет своим наследникам обширный набор функций, включающий: создание объекта, подкачку объекта из базы данных в память, удаление объекта и т.п. Каждый экземпляр хранимого класса имеет 2 уникальных идентификатора – OID и OREF.

OID идентифицирует объект, записанный в базу данных, а OREF идентифицирует объект, который был подкачан из базы данных и находится в памяти.

Объектная модель Caché в полном объеме поддерживает все основные концепции объектной технологии:

- наследование. Объектная модель Caché позволяет наследовать классы от произвольного количества родительских классов;

- полиморфизм. Объектная модель Caché позволяет создавать приложения целиком и полностью независимыми от внутренней реализации методов объекта;

- инкапсуляция. Объектная модель Caché обеспечивает сокрытие отдельных деталей внутреннего устройства классов от внешних по отношению к нему объектов или пользователей. Разделяют интерфейсную часть класса и конкретную реализацию. Интерфейсная часть необходима для взаимодействия с любыми другими объектами. Реализация же скрывает особенности реализации класса, т.е. все, что не относится к интерфейсной части;

- хранимость. Система Caché поддерживает несколько видов хранения объектов: автоматическое хранение в многомерной базе данных Caché; хранение в любых структурах, определенных пользователем; хранение в таблицах внешних реляционных баз данных, доступных через шлюз Caché SQL Gateway.

Класс объектов в Caché хранится в двух формах:

- описательная форма. Поддерживается развитый язык описания классов объектов UDL (unified definition language), построенный на базе XML (extensible markup language).

- объектная run-time форма. Использование класса возможно только после его компиляции в объектный код.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.