Создание логики на OCL
1) Действия, которые выполняет дескриптор в программе, определяются значением свойства Expression. В это свойство вводится выражение языка OCL, которое определяет схему создания объектов модели ЕСО.
Используем дескриптор ehChair для обращения к экземплярам класса Кафедра. Введем в свойство Expression объекта ehChair строку clChair.allinstances. Иначе это можно сделать с помощью редактора OCL выражений. Введенное выражение задает доступ ко всем текущим экземплярам класса Кафедра в объектном пространстве. В таблице, показанной на форме в окне Проектировщика, сразу же отобразятся поля класса Кафедра (ChairHeadSNP, ChairSecrSNP и ChairName) (в том числе поля родительского класса, если он имеется). Дескриптор ehChair становится поставщиком данных нашей модели ЕСО для первой таблицы.
2) В качестве выражения OCL объекта ehLecturer введем строку self.roleLecturers в свойство Expression. Здесь roleLecturers — это введенное нами при построении модели имя роли класса Преподаватель (clLecturer) в его ассоциативной связи с классом Кафедра (clChair). Это выражение определяет группу преподавателей, принадлежащих кафедре, которая выбрана в первой таблице. Дескриптор ehLecturer становится поставщиком данных для второй таблицы (см. Рисунок 8.15).
Рисунок 8.15 – Настройка OCL-выражений для взаимосвязанных таблиц
3) Дадим заголовкам полей таблиц русскоязычные названия. Выберем на форме таблицу dgChair. Щелчком на кнопке с многоточием в строке свойства TableStyles откроем окно редактора коллекции стилей таблицы DataGridTableStyle Collection Editor. Создадим новый стиль таблицы, нажав на кнопку Add (см. Рисунок 8.16).
Рисунок 8.16 – Коллекция таблиц компонента gdChair
Щелкнем по кнопке с многоточием в строке свойства GridColumnStyles. Откроется окно редактора стиля поля таблицы. Нажмем кнопку Add 3 раза, так как нужно переименовать три поля (создать три стиля для имеющихся полей таблицы). Выберем свойство HeaderText первого элемента коллекции и введем в него стоку Название кафедры. Затем в свойстве Width установим ширину поля – 150. И в свойстве MapingName выберем ChairName. То есть первый столбец настраиваемой таблицы будет содержать информацию атрибута ChairName класса Кафедра (см. Рисунок 8.17).
Теперь настроим оставшиеся два элемента коллекции. Эти столбцы будут называться ФИО зав кафедрой и ФИО секретаря кафедры. Нажмем кнопку ОК в обоих открытых окнах и убедимся, что поля таблицы получили новые названия.
4) По аналогии настроим стиль таблицы Преподаватели. В ней отобразим два поля: LecturerSNP и LectAcadDegree. Назовем их ФИО преподавателя и Ученая степень.
5) Запустим программу и убедимся, что при нажатии кнопки Добавить в таблице автоматически формируются новые строки, отражающие содержимое новых экземпляров класса из объектного пространства ЕСО. В них можно ввести нужные значения. Проверим корректное функционирование остальных настроенных операций над объектным пространством (см. Рисунок 8.18).
Рисунок 8.17 – Настройка элемента коллекции столбцов
Рисунок 8.18 – Работа с базой данных в режиме таблицы
Задания
1) Сформировать модель UML. Создать классы, описать их атрибуты. Настроить взаимосвязи между классами.
2) Связать пространство ЕСО с базой данных.
3) Создать пользовательский интерфейс.
4) Связать интерфейс с моделью UML.
5) Элементы управления связать с выражениями OCL для выполнения типичных стандартных действий (добавление, удаление объектов ECO и сохранение их в базу данных).
7.4. Контрольные вопросы
1) Технология MDA.
2) Что такое технология ECO?
3) Зачем нужны дескрипторы ECO?
4) Зачем нужен язык OCL?
5) Из каких этапов складывается процесс построения приложения ECO?
6) Как создаются классы в рамках модели приложения ECO?
7) Как представители класса PersistenceMapper настраиваются на конкретные СУБД?
8) Как автоматически сгенерировать схему базы данных на основе модели ECO?
9) Как элементы пользовательского интерфейса связываются с моделью ECO?
10) Как работает визуальный редактор выражений OCL?
Дата добавления: 2021-12-14; просмотров: 294;