Кубанский государственный университет
Опубликован: 24.12.2013 | Доступ: свободный | Студентов: 682 / 9 | Длительность: 24:28:00
Лекция 10:

Объектные модели данных

Создаём класс

Создадим простейший класс с единственным атрибутом Name. Запускаем Cache Studio. Выбираем в меню пункт Файл-Создать (рисунок 10.10).

Создание класса

Рис. 10.10. Создание класса

Затем выделяем иконку "Класс Cache" и нажимаем кнопку "OK". Появляется первый экран мастера создания класса (рисунок 10.11).

Задание имени и комментария

Рис. 10.11. Задание имени и комментария

Пакет, который предлагается указать, служит для объединения некоторой совокупности родственных классов. Пакеты %SYS, DOCBOOK, SAMPLES и USER создаются СУБД при инсталляции.

Оставляем имя пакета по умолчанию (User) и указываем имя класса. Можно дополнить описание класса комментарием, который как всегда будет проигнорирован компилятором. Кнопкой "Далее >" переходим к следующему шагу (рисунок 10.12).

Выбор типа класса

Рис. 10.12. Выбор типа класса

Здесь мастер предлагает нам выбрать тип объекта (таблица 10.3).

Таблица 10.3. Выбор типа объекта
Persistent Тип объектов хранимых в базе
Serial встраиваемые объекты; экземпляры классов этого типа могут сохраняться в базе только в случае включения в хранимые объекты
Registered тип объектов, которые могут существовать только в оперативной памяти без возможности их сохранения на диске
Abstract тип объектов у которых не может быть экземпляров
Data Type (тип данных) указывает на то, что данный класс будет типом данных
CSP класс типа CacheServerPage, предназначенный для построения серверных страниц Cache
Extends (расширяет) указывает на то, что данный класс является наследником некоторого уже существующего типа или типов; организовать множественное наследование можно перечислив через запятую имена классов родителей

Выбираем тип Persistent и кнопкой "Далее >" продолжаем создание класса (рисунок 10.13).

Дополнительные характеристики класса

Рис. 10.13. Дополнительные характеристики класса

В последнем окне, изображенном на рисунке 10.15, мастер предлагает указать дополнительные характеристики. Их значения станут частично понятными из дальнейшего изложения, а пока давайте оставим их пустыми и завершим создание кнопкой "Готово".

Пополним созданный класс свойством Name. Для этого выбираем пункт меню Класс > Добавить > Новое свойство для запуска мастера (рисунок 10.14).

Указываем имя свойства Name и, если есть желание, добавляем комментарий.

Задание имени свойства и его описания

Рис. 10.14. Задание имени свойства и его описания

Идём далее (рисунок 10.15).

Тип свойства

Рис. 10.15. Тип свойства

Выбираем тип создаваемого свойства.

В Cache поддерживаются несколько типов свойств:

  1. Единичное значения типа. Простые типы данных (%String, %Integer, %Date и т.д.) наследуют свое поведение от класса типов данных.
  2. Коллекция типа. Объектные базы, в отличие от реляционных, могут хранить множество значений в одном свойстве. В Cache поддерживаются два типа коллекций — массив и список. Элементы массива имеют индекс, уникально характеризующий элемент в массиве. Элемент списка определяется номером его позиции в списке.
  3. Отношение. Связи представляют собой двунаправленные зависимости между хранимыми объектами. В Cache реализовано два типа связей — Parent - Child (родитель - потомок) и One - Many (один-ко-многим). Первая связь зависимая, то есть при удалении предка, автоматически удаляются все наследники. Связь One-Many независимая связь, поэтому удаление предка при существовании наследников приводит к ошибке.

Логично предположить, что свойство Name является строкой. Поэтому не меняя типа переходим к следующему шагу (рисунок 10.16).

Характеристики свойства

Рис. 10.16. Характеристики свойства

Здесь необходимо небольшое пояснение. Первый пункт аналогичен заданию свойства NOT NULL для полей SQL-таблиц, второй — создает индекс для определяемого свойства, третий — аналогичен ограничению UNIQUE , четвертый указывает на то, что данное свойство является вычислимым, то есть его значение вычисляется во время обращения к нему. Ниже будет установлено, что при создании класса определяется соответствующая ему таблица. Её имя может отличаться от имени класса. Если необходимо, чтобы имена свойств и соответствующих им столбцов таблиц не совпадали, укажите имя SQL-столбца.

Характеристики свойства по умолчанию оставим без изменения. Остаётся ещё раз нажать кнопку "Далее >". Появится список параметров созданного свойства (рисунок 10.17).

Параметры свойства

Рис. 10.17. Параметры свойства

Изменим в нём значение параметра MAXLEN "20". На последнем шаге мастер предлагает переопределить методы доступа к свойствам Get и Set. Мы не станем этого делать и завершим создание свойства Name нажатием на кнопку "Готово" (рисунок 10.18).

Переопределение методов Set() и Get()

Рис. 10.18. Переопределение методов Set() и Get()

Теперь в окне Studio мы получим следующий текст

Class User.A Extends %Persistent {
Property Name As %String(MAXLEN = 20); }