- •Содержание
- •Глава 1. Введение в объектные субд 15
- •Глава 2. Объектно-ориентированные субд: концепции и проектирование 46
- •Глава 3. Введение в объектно-ориентированную субд cashé 78
- •Глава 4. Объектная модель cache 92
- •Глава 5. Технологии csp 121
- •Предисловие
- •Методические материалы рабочая программа дисциплины Пояснительная записка
- •Содержание дисциплины
- •Рекомендации по самостоятельной работе студента Календарно-тематический план работы
- •Методические указания по отдельным видам самостоятельной работы Указания по самостоятельному изучению теоретического материала
- •Указания по выполнению практических заданий и текущему контролю
- •Указания к промежуточной аттестации с применением балльно-рейтинговой системы оценки знаний.
- •Соответствие оценок
- •Теоретические материалы Глава 1. Введение в объектные субд
- •1.1. Специализированные приложения баз данных
- •Автоматизированное проектирование
- •Автоматизированное производство
- •Автоматизированная разработка программного обеспечения
- •Офисные информационные системы и мультимедийные системы
- •Геоинформационные системы
- •Прочие специализированные приложения
- •1.2. Недостатки реляционных субд
- •Неадекватное представление сущностей реального мира
- •Семантическая перегрузка
- •Слабая поддержка ограничений целостности и корпоративных ограничений
- •Однородная структура данных
- •Ограниченный набор операций
- •Сложности при обработке рекурсивных запросов
- •Упрощенное отношение s
- •Транзитивное замыкание отношения s
- •Проблема рассогласования типов данных
- •1.3. Основные концепции объектно-ориентированного подхода
- •1.3.1. Абстракция, инкапсуляция и сокрытие информации
- •1.3.2. Объекты и атрибуты
- •Атрибуты одного из экземпляров объекта типа Branch
- •1.3.3. Идентификация объектов
- •1.3.4. Методы и сообщения
- •1.3.5. Классы
- •1.3.6. Подклассы, суперклассы и наследование
- •1.3.7. Перекрытие и перегрузка
- •1.3.8. Полиморфизм и динамическое связывание
- •1.4. Способы хранения объектов в реляционной базе данных
- •1.4.1. Преобразование классов в отношения
- •Преобразование каждого класса или подкласса в отношение
- •Преобразование каждого подкласса в отношение
- •Преобразование иерархии в одно отношение
- •1.5. Поколения субд
- •Вопросы для самопроверки
- •Глава 2. Объектно-ориентированные субд: концепции и проектирование
- •2.1. Введение в объектно-ориентированные модели данных и оосубд
- •2.2. Особенности оосубд
- •2.2.1. Доступ к объекту
- •2.3. Перманентность
- •Создание контрольных точек
- •Сериализация
- •Явная подкачка объектов
- •2.4. Прочие аспекты функционирования оосубд
- •2.4.1. Транзакции
- •2.4.2. Поддержка многих версий
- •2.4.3. Эволюция схемы
- •2.5. Документ «Манифест разработчиков объектно-ориентированных систем баз данных»
- •Правило 1. Поддержка сложных объектов
- •Правило 2. Поддержка идентификации объектов
- •Правило 3. Поддержка инкапсуляции
- •Правило 4. Поддержка типов или классов
- •2.6. Преимущества и недостатки оосубд
- •2.6.1 .Преимущества
- •2.6.2. Недостатки объектно-ориентированных субд
- •2.7. Проектирование объектно-ориентированной базы данных
- •2.7.1. Сравнение объектно-ориентированного и логического моделирования данных
- •Сравнение характеристик объектного и логического моделирования данных
- •2.7.2. Связи и ссылочная целостность
- •2.7.3. Проектирование правил поведения
- •Вопросы для самопроверки
- •Глава 3. Введение в объектно-ориентированную субд cashé
- •3.1. Введение
- •3.2. Установка и использование Cache
- •3.3. Первый пример.
- •Создание класса
- •Создание свойств
- •Создание запроса
- •Компиляция
- •3.5. Мастер форм Cache для Web
- •Вопросы для самопроверки
- •Глава 4. Объектная модель cache
- •4.1. Правила идентификации
- •4.2. Элементы классов
- •Пример 1:
- •Пример 2:
- •4.3. Имя класса
- •4.4. Ключевые слова
- •4.5. Свойства
- •Видимость свойств
- •Поведение свойств
- •Ключевые слова
- •Виды свойств
- •Свойства типов данных
- •Параметры
- •4.6. Форматы данных и методы преобразования классов типов данных
- •4.7. Свойства ссылки на объекты
- •Встроенные объекты
- •4.8. Свойства коллекции
- •4.9. Потоки данных
- •4.10. Многомерные свойства
- •4.11. Методы
- •Аргументы метода
- •Определение значений по умолчанию для аргументов метода
- •Передача аргументов по ссылке
- •Возвращаемое значение метода
- •Видимость методов
- •Язык метода
- •Ключевые слова метода
- •Методы класса и экземпляров
- •Вызов метода
- •Виды методов
- •4.12. Запросы
- •4.13. Пакеты
- •Вопросы для самопроверки
- •Глава 5. Технологии csp
- •5.1. Выражения Caché
- •Пример p0. Вывод текущей даты
- •5.2. Скрипты, выполняющие код Caché
- •Пример p1. Счетчик посещений
- •5.3. Подпрограммы, вызываемые на стороне сервера #server(…)# Пример p3.
- •Пример p4. Калькулятор.
- •5.4. Теги csp
- •Основные теги csp
- •Пример p6.1.
- •Связывание объектов с формами: cspbind в формах
- •Пример р7. Использования тега csp:object.
- •Пример p10. Использование курсора в цикле while.
- •Пример p11. Вывести названия всех книг, которые описываются классом Kniga(Id, Name,Avtor,Cat).
- •Пример р13. Посчитать сумму двух чисел.
- •5.4.7. Использование JavaScript-кода и кода html в коде Caché Object Script
- •5.5. Доступ к полям формы. Класс %csp.Request
- •Пример p14.
- •Пример p15.
- •5.6. Объект %session
- •Вопросы для самопроверки
- •Заключение
- •Задания для самоконтроля Тесты для самоконтроля
- •Ключи к тестам для самоконтроля
- •Задания для контрольных работ Указания по выполнению контрольной работы
- •Темы контрольных работ
- •Вопросы для подготовки к экзамену
- •Глоссарий
- •Список источников информации Основная литература
- •Дополнительная литература
- •Приложение 1 пример учебной базы данных «агентство недвижимости»
- •Приложение 2 пример учебной базы данных для главы 3 Класс Person (клиенты библиотеки)
- •Класс Cat (категория книг)
- •Класс Kniga (книги)
- •Класс Vyd (выдачи книг)
Виды методов
В объектной модели Caché различают четыре разновидности методов. Рассмотрим первые два из них
метод-код
метод-выражение
Метод-код – содержит код, написанный на языке Caché Object Script. Это просто реализация метода в виде строк кода. Этот вид метода является видом по умолчанию. Например, следующий метод определяет код метода Speak для класса Dog:
Class MyApp.Dog Extends %Persistent [ClassType = persistent]
{
Method Speak() As %String
{
Quit "Woof, Woof"
}
}
Метод-код может содержать любой правильный код на Caché ObjectScript, включая встроенный SQL и HTML, или код на Basic, в зависимости от ключевого слова. При вызове метода используется ссылка на экземпляр:
Write dog.Speak() // выдаст: Woof, Woof
Метод-выражение – содержит выражение на языке Caché Object Script. Передача параметров по ссылке недопустима. Не может содержать макросы, встроенный SQL, встроенный HTML. При компиляции программы все вызовы метода заменяются этим выражением. Обычно используется для простых методов, которые, например, присутствуют в классах типов данных, когда требуется быстрая скорость вычисления выражений. Например, можно конвертировать метод Speak класса из предыдущего примера в метод-выражение:
Method Speak() As %String [CodeMode = expression]
{ "Woof, Woof" }
Этот метод можно вызывать так:
Write dog.Speak()
4.12. Запросы
Предоставляют в распоряжение разработчика операции с множествами экземпляров классов. Можно считать, что запросы образуют для объектов класса некий фильтр.
Запросы можно формулировать либо на языке Caché Object Script, либо на SQL. Результат запроса становится доступен через ResultSet – специальный интерфейс для обработки результатов запроса в прикладных программах, написанных на языке Caché Object Script, или на любом другом с использованием ActiveX, либо на языке Java. Кроме того, запросы могут быть представлены в виде хранимых процедур SQL или же представлений(View), а значит, далее обрабатываться средствами SQL.
4.13. Пакеты
Пакет это простой способ группирования взаимосвязанных классов под общим именем. Например, приложение может иметь систему счетов: “Accounting” и систему вложений: “Inventory”. Классы, реализованные в этом приложении, могут быть организованы в пакеты “Accounting” и “Inventory”.
На каждый из этих классов можно ссылаться, используя полное его полное имя, которое состоит из имени пакета и имени класса:
Do ##class(Accounting.Invoice).Method()
Do ##class(Inventory.Item).Method()
Если имя пакета может быть определено из контекста, то имя пакета может быть опущено:
Do ##class(Invoice).Method()
Пакет это просто соглашение об именах: он не обеспечивает никакой другой функциональности, кроме именования класса. Так же как и класс, определение пакета существует внутри рабочей области Caché. Рабочая область Caché это логическое представление данных, как правило, одной базы данных.
Имя пакета
Имя пакета это просто строка. Оно может содержать точку “.”, но больше никакой другой пунктуации. Например, полное имя класса “Test.Subtest.TestClass” означает, что «TestClass» это имя класса, а “Test.Subtest” это имя пакета. В схеме базы данных в SQL имя будет преобразовано к виду: “Test_TestClass”.
Определение пакетов
Пакеты подразумеваются при именовании классов. Самый простой способ создания пакета – задать его имя при создании нового класса в Caché Studio с использованием мастера, в котором также можно просмотреть список всех пакетов. При удалении последнего класса пакета, сам пакет автоматически удаляется.
Использование пакетов
Существует два пути использования имени класса:
использование полного имени класса вместе с именем пакета. Например: пакет.класс
использование короткого имени класса, позволив компилятору классов самому решать какому пакету будет принадлежать класс.
Пакеты и SQL
Каждый пакет соответствует SQL схеме. Например, если класс называется Team.Player (класс Player в пакете “Team”), соответствующая таблица называется “Team.Player” ( таблица Player в схеме “Team”).
Пакет по умолчанию “User” соответствует схеме “SQLUser”. Следовательно, класс с именем User.Person соответствует таблице с именем SQLUser.Person.
Если имя пакета содержит точку, то она заменяется подчерком. Например: класс MyTest.Test.MyClass (класс MyClass, пакет “MyTest.Test”) становится таблицей
MyTest_Test.MyClass (MyClass – таблица, “MyTest_Test” – схема).
Схема по умолчанию SQLUser. Например:
Select ID, Name from Person
// То же самое что и:
Select ID, Name from SQLUser.Person
Резюме
Объектная модель Caché разработана в соответствие со стандартом ODMG (Object Data Management Group). Класс – это некий шаблон, в соответствии с которым строятся конкретные экземпляры класса. Объект в Caché имеет определенный тип, т.е. является экземпляром какого-либо класса.
Состояние объекта задают значения его свойств, поведение объекта задают его методы (операции).
В Caché реализовано два типа классов:
классы типов данных (литералы).
классы объектов (объекты).
Классы типов данных подразделяются на два подкласса типов:
атомарные.
структурированные.
Классы объектов подразделяются на:
незарегистрированные
зарегистрированные.
Объектная модель Caché в полном объеме поддерживает все основные концепции объектной технологии:
наследование. Объектная модель Caché позволяет наследовать классы от произвольного количества родительских классов;
полиморфизм. Объектная модель Caché позволяет создавать приложения целиком и полностью независимыми от внутренней реализации методов объекта;
инкапсуляция. Объектная модель Caché обеспечивает сокрытие отдельных деталей внутреннего устройства классов от внешних по отношению к нему объектов или пользователей;
хранимость. Система Caché поддерживает несколько видов хранения объектов: автоматическое хранение в многомерной базе данных Caché; хранение в любых структурах, определенных пользователем; хранение в таблицах внешних реляционных баз данных, доступных через шлюз Caché SQL Gateway.
Класс объектов в Caché хранится в двух формах:
описательная форма. Поддерживается развитый язык описания классов объектов UDL (unified definition language), построенный на базе XML (extensible markup language).
объектная run-time форма. Использование класса возможно только после его компиляции в объектный код.
