![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Глава 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 форма. Использование класса возможно только после его компиляции в объектный код.
|