Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБОРАТОРНЫЙ ПРАКТИКУМ.doc
Скачиваний:
15
Добавлен:
11.11.2018
Размер:
996.86 Кб
Скачать

Тема: «Определение классов объектов, участвующих в перевозочном процессе»

После построения информационной модели студенты приступают к определению классов. Необходимо выполнить точное определения класса по выбранному варианту лабораторной работы. Например, для класса «Поезд» делается полное определение класса, для связанных с ним классов: «Натурный лист поезда», «Грузовая станция», «Техническая станция» - описываются лишь наиболее существенные свойства, выбор которых студенты делают по собственному усмотрению.

Определение классов производится следующим образом. Щелчком по Cache-кубу открыть его меню и выбрать пункт Studio. На экране высветится главное окно Cache- Studio, демонстрирующее проект Proect 1, который на данном момент является пустым.

Создание нового класса поддерживается мастером. Необходимо выбрать режим Создание класса. На экране появится Мастер создания классов. Определение нового класса начинается с задания его имени и описания. При задании имени обязательно сопроводить его кратким комментарием. Например, присвоить классу имя Wagon. Далее, щелчком Next производится переход на следующий экран, где устанавливается тип класса.

Сохраним, предлагаемый по умолчанию тип Persistent (хранимый), чтобы Cache сама обеспечила автоматическое сохранение и поиск объектов этого класса. Задание имени и типа класса завершается нажатием на кнопку Finish. Мастер классов создал новый класс, который виден в окне иерархии проекта Cache Studio. На экране отобразится:

/// Вагон

Class User.Wagon Exstends %Persistent

Затем следует описать свойства класса. Обратимся к табл.2 приложения, в которой указаны данные о вагоне. Например, зададим свойство - Номер накладной на вагон (NOM_NAKLAD (CHAR 9)). Это поле необходимо для того чтобы связать номер вагона со сведениями о грузе, которые содержатся в классе железнодорожных документов «Дорожная ведомость» (см. рис 1.). Мы видим, что это поле цифровое, содержит 9 байт и должно быть обязательным.

Для задания свойства «номер накладной» в классе Wagon нужно щелкнуть по кнопке «Новое свойство». Откроется окно Мастера создания свойств. Введем NOM_NAKLAD в поле Имя свойства и заполним поле Описание нового свойства – «Номер накладной». Нажав Next, в следующем окне (Тип свойства) оставим тип данных %String и перейдем в следующее окно (Характеристики).

Здесь необходимо установить флажок «Обязательное», так как вагон не может перевозить груз без перевозочного документа, и Индексируемое, чтобы ускорить поиск. Нажав кнопку Finish, завершим создание нового свойства. На экране отобразится:

/// Вагон

Class User.Wagon Exstends %Persistent

(

Index NOM_NAKLAD Index On NOM_NAKLAD;

/// Номер накладной

Property NOM_NAKLAD As %String;

Аналогичным образом студенты определяют другие свойства класса Wagon и других классов по вариантам лабораторной работы, приведенным на стр. 19 (разработка методов перечисленных классов не входит в данную лабораторную работу и выполняется при выполнении лабораторной работы № 4).

После задания всех свойств класса перейдем к определению нового запроса. Например, его назначением является поиск всех вагонов, информация о которых занесена в базу данных, с возможностью выбора отдельный свойств (например, номера вагона, номера накладной, станции дислокации вагона).

Щелчком по значку Новый запрос открывается Мастер запросов. Запросу надо присвоить имя, назовем его Poisk (поиск) и введем краткое описание. Щелчком по Next переходим к следующему шагу – определению параметров запроса, который для упрощения пропускаем с помощью Next. На следующем этапе устанавливаются поля, возвращаемые запросом. На экране слева приведен список всех свойств класса и дополнительное поле ID. Необходимо выделить одно за другим поля ID, NOM_VAG, NOM_NAKLAD, STAN_DIS и щелкнуть по кнопке со значком Стрелка вправо. Поля будут перенесены в правый список выбранных полей.

Закончив эту операцию надо щелкнуть Next. Опустив следующий шаг, где задается условие запроса, перейти с помощью кнопки Next к выбору последовательности сортировки. Сортировка выбранных вагонов должна выполняться, например, в порядке возрастания номеров вагонов, то есть по полю NOM_VAG. Для завершения создания запроса нажать кнопку Finish. Теперь на экране (под описанием свойств) можно увидеть:

/// Вагон

Class User.Wagon Exstends %Persistent

(

Index NOM_NAKLAD Index On NOM_NAKLAD;

/// Номер накладной

Property NOM_NAKLAD As %String;

………………………………………………………

……………………………………………………..

/// Поиск всех вагонов

Query Poisk ( ) As %SQL Query (CОNTAINID = 1)

(

SELECT % ID, NOM_VAG, NOM_NAKLAD, STAN_DIS

ORDER BY NOM_VAG

)

Для использования нового класса в Cache, необходимо провести его компиляцию. Для этого надо щелкнуть по кнопке «Компилировать», после чего будет получено в нижнем окне итоговое сообщение о безошибочной компиляции класса.

В заключение, используя Мастер – форм Сache Web Form Wizard надо сгенерировать простейшую Web-форму, с помощью которой, в дальнейшем можно имитировать элементы работы классов «Источники информации», показанные на схеме «Иерархия классов модели перевозочного процесса» (рис. 1).

Перед выполнением данной работы необходимо сначала выполнить компиляцию созданного класса Wagon. Для этого достаточно щелкнуть по кнопке «Компилировать», после выполнения этой операции класс Wagon готов к применению.

Создадим CSP-форму. В иерархии проекта Cache Studio надо щелкнуть правой кнопкой по CSP-файлы и выбрать пункт Создание CSP-файла. В ответ на это Cache создаст и откроет новую CSP-форму. Надо пометить заготовку кода между тегами <BODY> и </BODY> и выбрать из меню «Вставить» опцию «Мастер форм». Откроется окно Мастера форм Cache для Web. Нажав на Next можно увидеть список доступных классов, состоящий пока из одного элемента User.Wagon. Выберем этот класс. Включим в форму все его свойства: % ID( ), NOM_VAG, NOM_NAKLAD, STAN_DIS и нажмем на Finish. Код, сгенерированный Мастером форм, появится в окне редактирования между тегами <BODY> и </BODY>. Следует сохранить изменения, выбрав пункт меню Файл/Сохранить как. Далее следует поместить CSP-форму в папку csp/ user под именем wagon.csp.

Теперь можно работать с новой страницей CSP. Щелчком по пункту Web-страница меню Вид будет запущен браузер и высветится форма, автоматически сгенерированная для класса User.Wagon. Студенты, с помощью построенной Web-страницы, заполняют таблицу по нескольким, произвольно выбранным номерам вагонов. Введенная информация будет использована в качестве отладочного примера при выполнении лабораторной работы № 3.

Требования к оформлению лабораторной работы № 2

Студенты оформляют пояснительную записку, включающую описание этапов лабораторной работы, и составляют приложение к пояснительной записке, куда включают:

- листинг определения классов, свойств классов, CSP-файла, Web-страницы;

- распечатку информации, введенной в базу данных с помощью Web-страницы.

Лабораторная работа № 3

Тема: «Создание простейших пользовательских приложений

для класса транспортных объектов инструментальными средствами Саche»

После выполнения работы по определению классов выбранных объектов (лабораторная работа № 2) студенты приступают к разработке пользовательских приложений. Варианты заданий на разработку приложений приведены в пункте 3.2.

При написании приложений студенты имеют возможность самостоятельного выбора средств программирования. Имеются следующие возможности:

- использование мастер-запросов и мастер-форм Cache, как было показано в описании лабораторной работы № 2;

- применение функции Cache «SQL -менеджер» (выбирается из меню куба) для построения SQL-запросов к реляционным таблицам Cache.

- использование мастер-методов или «терминал» Cache для отладки собственного кода на языке Visual Basic или Cache ObjektScript (с документацией можно познакомиться на сайте: www@InterSystems.ru;

В данной лабораторной работе мы рассмотрим применение «SQL -менеджер» на примере преобразования текстовых файлов в таблицы Cache. Следующая 4-я лабораторная работа будет посвящена написанию приложений в коде Cache ObjektScript.