Смекни!
smekni.com

Методические указания к лабораторным работам Чебоксары 2011 (стр. 6 из 6)

Список рекомендуемой литературы

1. В.Кирстен. СУБД Cache: Объектно-ориентированная разработка приложений. Учебный курс./ Кирстен В., Ирингер М., Рёриг Б., Шульте П. СПб. – Питер, 2001. 384 с.

Лабораторная работа 8

Создание объектно-ориентированной базы данных

Теория. Постреляционная СУБД Cache позволяет работать не только с таблицами, но и с объектами, в том числе и многомерными. Данная работа – один из шагов к созданию клиент-серверного приложения, полностью описанного в [1].

Создадим приложение, работающее с базой данных контактной информации о студентах. База данных будет содержать два класса: «Student» и «PhoneNumber». Создаваемые классы связанны, каждый экземпляр класса «Student» может иметь несколько телефонных номеров. Для создания и редактирования классов в Cache предназначена утилита Cache Studio.

Задание. Выберите область User в которой будет создаваться класс используя меню Файл. Сменить область.

Создайте новый проект (Файл . Новый проект) и сохраните его под именем StudentContactDB (Файл . Сохранить проект).

Создайте новый класс Student (Файл . Создать . Класс Cache), откроется мастер создания класса. Укажите имя пакета «ContactStudentDB». Укажите имя класса «Student». Описание данного класса может остаться пустым, тем не менее, рекомендуется вводить описание класса, т.к. это описание будет использоваться, во-первых, для создания комментария к описанию класса, а во-вторых, для генерации документации класса. На следующем шаге создания класса выберите тип класса «Persistent» и нажмите «Далее». Необходимо заметить, что только объекты классов типа «Persistent» сохраняются в базе данных. На следующем шаге мастера выберите опцию «Генерация тестовых данных». Для завершения создания класса нажмите «Готово». Если Вы все сделали правильно, то в окне редактирования классов появиться заготовка для класса «Student», которую необходимо использовать для дальнейшего наполнения класса свойствами и методами. В левой части «Studio» Вы можете просмотреть создаваемый проект и увидеть уже созданный проект и классы, содержащиеся в нем.

Создание свойств класса

Свойства представляют состояние объектов. Существует два типа свойств:

• Свойства, содержащие значения;

• Свойства-связи, задающие связи между объектами.

Свойство имеет однозначное имя, тип, необязательный список ключевых слов, необязательный список параметров, определенных для соответствующего типа данных.

Синтаксис:

Property <Имя свойства> as <тип> (параметры) [ключевые слова]

Для добавления нового свойства к созданному классу воспользуйтесь мастером создания свойств из меню Класс.Добавить.Новое свойство. В открывшемся мастере введите имя нового свойства «Name» (описание можно оставить пустым, но для того, чтобы наглядно убедиться в работе мастера, введите значение «Имя студента»). Выберите «Далее», и на следующей странице мастера выберите тип свойства. Установите «Единичное значение типа» и тип «%String» (для отображения всех возможных типов свойств нажмите «Просмотр…»). Задайте характеристики свойства на следующей странице мастера. Выберите «Обязательно», чтобы это поле было не пустым. Далее следуйте по страницам мастера, оставляя все параметры без изменений.

Второе свойство, которое будет в классе студента это свойство типа контактных данных. Как и при создании предыдущего свойства воспользуйтесь мастером Класс.Добавить.Новое свойство. Имя свойства «ContactType», тип «%String». На вкладке «Параметры свойства» введите значения параметров создаваемого свойства. Найдите в списке параметр «VALUELIST» и определите для него следующие значения: «,HOME,MOBILE». Обратите внимание на запятую перед словом «HOME», которая указывает на разделитель допустимых значений свойства. Рекомендуется использовать латиницу для обозначения свойств.

Каждому студенту может соответствовать несколько телефонных номеров. Для их хранения создайте класс «PhoneNumber», отвечающий следующим условиям:

1. Класс принадлежит к тому же пакету, что и класс «Student»;

2. Тип класса «Persistent»;

3. Поддерживает автоматическую процедуру заполнения тестовыми данными.

Состав свойств класса PhoneNumber:

Имя свойства

Тип

Параметры

PhoneNumberType %String VALUELIST=,HOME,MOBILE, FAX,PAGER
Number %String POPSPEC = USPhone()

Добавление запроса к классу «PhoneNumber»

Следующим шагом необходимо добавить запрос к классу «PhoneNumber».

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

На первой странице мастера назначьте имя запросу «RetriveStudentByName». На следующей странице добавьте запросу входной параметр «name» типа %String с помощью кнопки со значком . Перейдя на следующий экран, вы сможете выбрать поля, которые будет возвращать запрос.

Наш запрос будет возвращать поля «%ID,Number,Phone­NumberType». Теперь вы можете закончить работу с этим мастером, который добавит в код класса следующие строки:

Query RetriveStudentByName(name As %String) As %SQLQuery(CONTAINID = 1)

{

SELECT %ID,Number,PhoneNumberType FROM PhoneNumber

}

Далее Вы сможете добавить условие для отбора по имени и сортировку по типу телефонного номера:

WHERE (Student->Name = :name)

ORDER BY PhoneNumberType

Обратите внимание, на регистр ввода переменных. Cache чувствительна к регистру.

Создание отношения между классами

Откройте в Cache Studio класс «Student», а, затем, для создания отношения воспользуйтесь мастером создания свойств (Класс . Добавить . Новое свойство). На первом экране мастера назначьте имя «PhoneNumbers» и выберите «далее». На следующей странице выберите тип свойства «Отношение». Следующая страница мастера позволит определить тип устанавливаемой связи. Выберите следующие характеристики:

1) Это свойство-отношение ссылается на «потомок: потомки этого объекта»

2) Это свойство-отношение связанно с объектами следующих типов:

«ContactStudentDB.PhoneNumber»

3) Имя соответствующего свойства в классе, который ссылается: «Student»

Экран мастера «Дополнительные изменения» оставьте без изменений! Мастер добавит следующие описания:

- в класс «Student»:

Relationship PhoneNumbers As ContactStudentDB.PhoneNumber [ Cardinality = children, Inverse = Student ];

- в класс «PhoneNumber»:

Relationship Student As ContactStudentDB.Student [ Cardinality = parent, Inverse = PhoneNumbers ];

Теперь Вы можете скомпилировать класс, для этого откройте его в среде «Studio» и в главном меню выполните Собрать . Компилировать.

Заполнение класса тестовыми данными

Для заполнения тестовыми данными созданных классов в Cache предусмотрен специальный метод Populate(). Выполните следующие шаги, чтобы заполнить класс студентов тестовыми объектами.

1. Запустите «Терминал» из меню Cache-куба.

2. В терминале выберите рабочую область с помощью команды «zn» (Слово перед знаком «>» означает текущую область. Например: для входа в область «USER» необходимо набрать «zn .USER.»).

3. Для заполнения данными таблицы, необходимо запустить метод заполнения: «do ##class(ContactStudentDB.Student). Populate(5,9)». Копирование не всегда работает, поэтому наберите с клавиатуры. Просмотрите полученный результат (см. ниже).

Просмотр таблиц и данных

Используя утилиту «Портал управления системой», запускаемую из Cache-куба, Cache позволяет, например, просмотреть содержимое таблиц вашего проекта и выполнить запросы на языке SQL. Для просмотра содержимого таблицы выполните следующие действия:

А). Откройте утилиту «Портал управления системой», далее SQL . Просмотр SQL схем;

Б). Выберите область, в которой ведется разработка проекта;

В). Выберите таблицу, и нажмите «Открыть таблицу» (OpenTable).

4. Для удаления данных следует запустить метод KillExtent(): «do ##class(ContactStudentDB.Student). %KillExtent()».

Контрольные вопросы. Какие слова появляются как тестовые данные? Что содержит Портал управления системой? Какие существуют параметры свойства типа %String? Что спрашивает мастер запросов? Что спрашивает мастер свойств?

Список рекомендуемой литературы

1. Н.А. Иванчева. Постреляционная СУБД Caché. (метод. пособие). / Иванчева Н.А., Иваньчева Т.А. Новосибирский государственный университет. Высший колледж информатики. Новосибирск, 2004. - 120 с.

Содержание отчета

1. Титульный лист.

2. Теоретические сведения по темам лабораторных работ.

3. Задания по варианту.

4. Последовательность выполнения каждой работы.

5. Результаты выполнения каждой работы.

6. Выводы.

7. Использованная литература.

Алгоритм выполнения лабораторных работ

1. Прочитать теоретическую часть.

2. Определить свой номер варианта (для 1-й работы).

3. Выполнить работу на компьютере.

4. Показать преподавателю на компьютере, как выполняется работа (выборочно).

5. Составить часть отчета в электронном виде. В конце прохождения лабораторного практикума объединить все отчеты в один.

6. Ответить на один из контрольных вопросов.

Оглавление

Общие сведения………………………………………………..

3

Реляционные базы данных…………………………………….

3

Лабораторная работа 1. Основы работы с Microsoft Access...

3

Лабораторная работа 2. Microsoft Access…………………….

7

Лабораторная работа 3. Язык SQL в Microsoft Access………

10

Лабораторная работа 4. Базы данных и SQL в Delphi……….

11

Постреляционные базы данных………………………………

14

Лабораторная работа 5. Первый пример Cache. Отладчик Caché Studio…………………………………………………….

14

Лабораторная работа 6. Создание Web интерфейса пользователя используя CSP………………………………………….

18

Лабораторная работа 7. Создание пользовательского интерфейса Web используя Zen………………………………….

20

Лабораторная работа 8. Создание объектно-ориентиро­ванной базы данных …………………………………………..

30

Содержание отчета…………………………………………….

35

Алгоритм выполнения лабораторных работ…………………

35

базы данных

Методические указания к лабораторным работам

Отв. за выпуск М.В. Яковлева

ЛР № 06547 от 28.01.2002

Подписано в печать 25.03.2011. Формат 60´84/16. Бумага газетная. Печать оперативная. Гарнитура Times New Roman. Усл.печ. л. . Уч.-изд.л. . Тираж 50 экз. Заказ № .

Чувашский государственный университет

Типография университета

428015 Чебоксары, Московский просп., 15

[1] В работах 5, 6 и 7 использована справка по Caché от разработчиков