![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Представление подклассов
По умолчанию, любые поля, которые входят в подкласс сохраненного класса, хранятся в дополнительном узле. Имя подкласса используется в качестве дополнительный идентификатор узла. Например, допустимо, мы определили простой сохраненный класс MyApp.Person с двумя литеральными свойствами:
Class MyApp.Person Extends %Persistent [ClassType = persistent] { Property Name As %String; Property Age As %Integer; }
Потом определили сохраненный подкласс, MyApp.Student, ктр включает два дополнительных литеральных свойства:
Class MyApp.Student Extends Person [ClassType = persistent] { Property Subject As %String; Property Mark As %Float; }
Если мы создадим и сохраним два экземпляра класса MyApp.Student, то результирующий глобал будет подобен следующему:
^ MyApp.Person = 2 // счетчик узлов ^MyApp.Person (1) = $LB (" Student", 19, " Иванов") ^MyApp.Person (1, " Student") = $LB (3.2, " Физика") ^MyApp.Person (2) = $LB (" Student", 20, " Петров") ^MyApp.Person (2, " Student") = $LB (3.8, " Химия")
Свойства, унаследованные от класса Person, хранятся в главном узле, в то время как свойства, которые входят в класс Student сохранятся в дополнительных подузлах. Эта структура гарантирует, что данные класса Student могут быть использованы равнозначно и как данные класса Person. Например, SQL запрос, который выдает список имен всех объектов класса Person, будет корректно выбирать данные как Person, так и Student. Такая структура также облегчает работу компилятора классов по поддержке совместимости свойств, которые добавляются как из классов, так и из подклассов. Заметим, что первый элемент узла содержит строку " Student", которая указывает на то, что это данные класса Student. 6 Расширение Caché SQL СУБД Caché является уникальной системой, поскольку наряду с реализацией в полном объеме основных принципов ОО технологии, также поддерживается язык структурированных запросов SQL. Это обеспечивает выполнение запросов согласно стандарту, который поддерживается многими инструментальными средствами. Кроме того, с помощью единой архитектуры данных, возможно автоматическое преобразования реляционных описаний объектов в классы. При получении DDL данных, Caché автоматически преобразует DDL-описание в свою внутреннюю форму и сохраняет полученную конструкцию в словаре данных. Это позволяет работать с данными, как в виде реляционных таблиц, так и классов объектов. Таким образом, при переходе на объектную технологию, разработка не начинается с нуля – много операций Caché делает автоматически. Таблица 1
Также в Caché есть некоторые понятия, которым нет соответствующих в реляционной модели, например параметры класса, методы объектов, и тому подобное. Кроме того, запросы могут быть членами класса, например: Query GetAll() As %SQLQuery(CONTAINID = 1) { } Реализация SQL в Кэше предусматривает целый ряд расширений стандартного синтаксиса по сравнению с ANSI-стандартом. Это было сделано для поддержки интеграции с Caché Objects. К ним относятся: - дополнительные операторы Caché; - поля-списки; - соединение; - отношение зависимости.
|