- •«Технологии разработки программного обеспечения»
- •Оглавление
- •Введение
- •Анализ проблемы. Постановка задачи
- •Введение
- •Описание примера
- •Составление списка заинтересованных лиц
- •Анкетирование и проведение интервью
- •Список потребностей заинтересованных лиц
- •Задания
- •Контрольные вопросы
- •Моделирование объекта автоматизации
- •Введение
- •Введение в методологиюAris
- •Описание инструментаAris. Начало работы
- •Построение организационной модели
- •Построение диаграммы цепочек добавленного качества
- •ПостроениеeEpCмодели
- •Описание объектов автоматизации
- •Задания
- •Контрольные вопросы
- •Разработка модели вариантов использования и их спецификаций
- •Введение
- •Разработка модели вариантов использования
- •Модель вариантов использования
- •Построение модели вариантов использования
- •Спецификация вариантов использования
- •Основной поток
- •Альтернативные потоки
- •Специальные требования
- •Пример спецификации варианта использования
- •Алгоритм расчёта рейтингов
- •Задания
- •Пример написания раздела
- •Назначение документа
- •Наименование системы
- •Сведения о заказчике и исполнителе
- •Основания для выполнения работ, сроки и финансирование
- •Основные понятия, определения и сокращения
- •Актуальность разработки системы
- •Назначение и цели создания (развития) системы
- •Требования к содержимому раздела
- •Пример написания раздела
- •Характеристики объекта автоматизации
- •Требования к содержимому раздела
- •Пример написания раздела
- •Организация и планирование научно-исследовательской и инновационной деятельности
- •Исполнители научно-исследовательских работ
- •Учет и отчетность по научно-исследовательским работам
- •Требования к системе
- •Требования к содержимому раздела
- •Пример написания раздела
- •Требования к системе в целом
- •Требования к структуре и функционированию системы
- •Требования к численности и квалификации персонала
- •Требования к функциям (задачам)
- •Описание вариантов использования
- •Состав и содержание работ по созданию системы
- •Требования к содержимому раздела
- •Пример написания раздела
- •Порядок контроля и приемки системы
- •Требования к содержимому раздела
- •Пример написания раздела
- •Требования к составу и содержанию работ по подготовке объекта автоматизации к вводу системы в действие
- •Требования к содержимому раздела
- •Пример написания раздела
- •Создание служб необходимых для функционирования системы
- •Функциональные этапы внедрения системы
- •Требования к документированию
- •Требования к содержимому раздела
- •Пример написания раздела
- •Паспорт системы
- •Общее описание системы
- •Руководство администратора
- •Руководство пользователя
- •Регламент эксплуатации
- •Источники разработки
- •Правила оформления
- •Задание
- •Бизнес-логика
- •Объектно-реляционное отображение
- •Структура бд
- •Создание проекта вBorlandDeveloperStudio
- •Добавление нового модуля в проект
- •Создание классов с помощью диаграммыUml
- •Добавление полей
- •Добавление свойств
- •Добавление процедуры
- •Добавление функции
- •Создание отношений между классами
- •Ассоциация
- •Агрегация
- •Наследование
- •Пример создания классов
- •Создание классов и отношений между ними слоя объектно-реляционного отображения
- •Создание классов слоя бизнес-логики
- •Невизуальные компоненты интерфейса используемые в примере
- •TimageList
- •TActionManager
- •Визуальные компоненты используемые в примере
- •TBitBtn
- •TdbGrid
- •TcomboBox
- •TPageControl
- •Пример разработки интерфейса
- •Главная форма
- •Форма редактирования параметров студента
- •Форма редактирования книг
- •Форма отображения списка книг
- •Подключение классов
- •Сохранение проекта
- •Задание
- •Шаблоны проектирования
- •Шаблон InformationExpert(информационный эксперт)
- •Преимущества
- •Шаблон Creator(создатель)
- •Преимущества
- •Шаблон LowCoupling(слабое связывание)
- •Преимущества
- •Шаблон HighCohesion(высокое зацепление)
- •Преимущества
- •Шаблон Controller(контроллер)
- •Преимущества
- •Применение шаблонаInformationExpert
- •Применение шаблонаCreator
- •Использование шаблонаHighCohesion
- •Применение шаблонаController
- •Задание
- •Технология eco
- •Язык объектных ограничений ocl
- •Mdi-контейнеры
- •Создание простого mda-приложения
- •Основные этапы разработки приложения
- •Обзор возможностей Borland Developer Studio 2006 для разработки mda-приложения
- •Создание моделиUml
- •Создание бд и настройкаEcOкомпонент
- •Создание интерфейса
- •Связывание интерфейса с моделью
- •Создание логики наOcl
- •Задания
- •Контрольные вопросы
- •РазработкаMda-приложения с использованием машин состояний
- •Введение
- •Автоматы
- •Состояния
- •Подавтоматы
- •Диаграммы состояний
- •Создание mda-приложений с использованием машин состояний
- •Модификация модели uml
- •Создание машины состояний
- •Обновление базы данных
- •Модификация пользовательского интерфейса
- •Связывание интерфейса с моделью
- •Применение автоформ
- •Расширение пользовательского интерфейса
- •Задания
- •Контрольные вопросы
- •Расширенные возможности разработкиMda-приложений
- •СозданиеMda-приложения с расширенными возможностями
- •Модификация моделиUml
- •Программное добавление объекта
- •Программное удаление объекта
- •Программное редактирование объекта
- •Работа со справочником
- •Поиск объектов
- •Задания
- •Контрольные вопросы
- •Заключение
- •Библиографический список
Программное удаление объекта
Настроим удаление объекта Кафедра. Для доступа к пространству ECOподключим к форме файл packModelUnit (в разделеinterfaceмодуля формы). В обработчике события выбора пункта меню Действие > Кафедра > Удалить запишем следующий код:
procedure TLecturer.MenuItem9_Click(sender: System.Object; e: System.EventArgs);
var
CurChair: clChair;
DelChair: string;
result: System.Windows.Forms.DialogResult;
begin
if ehChair.GetList.Count <> 0 then
begin
if cmhChair.Element.AsObject is clChair
then
begin
CurChair := clChair(cmhChair.Element.AsObject);
DelChair := 'Вы хотите удалить кафедру ' + CurChair.ChairName + ' ?';
result := MessageBox.Show(DelChair, 'Удаление кафедры', MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if(result = System.Windows.Forms.DialogResult.Yes)
then
CurChair.AsIObject.Delete;
EcoGlobalActions.ExecuteAction(EcoAction(1),RHRoot);
end;
end;
end;
Перед ликвидацией объекта надо определить, какой объект пространства ECOподлежит уничтожению. Воспользуемся компонентомcmhChair. ПеременнаяCurChairбудет хранить локальный экземпляр класса Кафедра (выделенного в таблице Кафедры). Перед удалением объекта необходимо проверить, является ли выбранный в таблице элемент представителем классаclChair. Для этого обратимся к свойствуElementкомпонентаcmhChair, которое определяет выбранный компонент. Стандартный методAsObjectпозволит интерпретировать значение свойстваElementкак стандартный объект .NET. Сравним его тип с нужным нам типом (классомclChair).
Дескриптор ehChairорганизует доступ к объектам класса Кафедра. Воспользуемся его методамиGetListиCount, чтобы проверить наличие хотя бы одного объекта класса Кафедра.
Воспользуемся готовым компонентом MessageBoxдля подтверждения удаления. В строковую переменнуюDelChairзапишем вопросительное предложение, которое передадим в качестве параметра в методShowкомпонентаMessageBox. Параметр методаShow–MessageBoxButtons.YesNoпозволит создать окно сообщения с двумя кнопками. Возвращаемое значение от этого компонента (YesилиNo) присвоим переменнойresult(типаSystem.Windows.Forms.DialogResult). Параметр методаShow–MessageBoxIcon.Questionсоздаст в окне сообщения иконку-вопрос.
Нам нужен интерфейс IObjectсозданного локального экземпляра (хранимого в переменнойCurChair), присутствующий у всех объектовECOи предназначенный для прямой манипуляции объектным пространствомEcoSpace. Он позволяет, в частности, удалить нужный экземпляр класса из пространстваEcoSpace. Удаление выполняется вызовом методаDeleteинтерфейсаIObject. Затем обновляем базу данных.
Запустим приложение и проверим функцию удаления (см. Рисунок 10 .76).
Рисунок 10.76 – Программное удаление объекта
Удаление объектов Преподаватель и Дисциплина аналогично.
Программное редактирование объекта
Перейдем к настройке операции редактирования объекта. Так же, как и в случае добавления, для редактирования воспользуемся отдельным окном. Создадим новую форму ECOEnabledWindowsForm. В этой форме будем редактировать выбранную в таблице кафедру. Назовем формуwfChairEdit(классTChairEdit), в свойствеTextвведем значение Редактирование кафедры.
Настроим вызов созданной формы по выбору пункта меню Действие > Кафедра > Редактировать. Перейдем к вкладке CodeформыwfChairEdit. Объявим переменную, ответственную за создание данной формы:
var
callChairEdit: TChairEdit;
Перейдем к форме Преподаватели. Подключим форму wfChairEdit. Для редактирования объекта надо определить, какой объект подлежит редактированию. Для этого в форме Преподаватели создадим переменную типаclChair:
var
callLect: TLecturer;
CurChair: clChair;
В этой переменной будем хранить текущий объект.
Для взятия текущего объекта воспользуемся компонентом cmhChair. В обработчике события выбора пункта меню Действие > Кафедра > Редактировать пропишем следующие операции:
procedure TLecturer.MenuItem8_Click(sender: System.Object; e: System.EventArgs);
begin
if ehChair.GetList.Count <> 0
then
begin
if cmhChair.Element.AsObject is clChair
then
CurChair := clChair(cmhChair.Element.AsObject);
callChairEdit := TChairEdit.Create(EcoSpace);
callChairEdit.MdiParent := ParentWin;
callChairEdit.Show;
end;
end;
Окно редактирования будет создано в том случае, если есть хотя бы один объект класса Кафедра. Воспользуемся переменной CurChairв форме Редактирование кафедры, чтобы иметь доступ к значениям полей текущего объекта.
Вернемся к форме Редактирование кафедры. Разместим на ней три компонента Label, три компонента TextBox(категорияWindowsForms) и две кнопки (см. Рисунок 10 .77).
В свойстве FormBorderStyleустановим значение FixedDialog, в свойствеControlBox–False.
Рисунок 10.77 – Настройка компонентов формы Редактирование кафедры
Подключим файл packModelUnit, выберем в свойстве EcoSpaceTypeкомпонентаRHRootзначениеprojDeanOfficeEcoSpaceдля доступа к пространству ECO. Подключим формуwfLecturer(Преподаватель), чтобы использовать созданную в ней переменную CurChair.
При вызове окна Редактирование кафедры поля компонентов TextBox должны содержать значения соответствующих полей объекта, выбранного для редактирования.
Выделим форму в окне проектировщика и перейдем на вкладку Events(События) в инспекторе объектов. Выберем событиеLoadи сформируем обработчик, в котором запишем следующий код:
procedure TChairEdit.TChairEdit_Load(sender: System.Object; e: System.EventArgs);
begin
TextBox1.Text := CurChair.ChairName;
TextBox2.Text := CurChair.ChairHeadSNP;
TextBox3.Text := CurChair.ChairSecrSNP;
end;
После того, как пользователь отредактировал данные, сохраним изменения. Сохранение происходит и в случае, когда данные не были изменены. В обработчике нажатия кнопки ОК запишем код:
procedure TChairEdit.Button1_Click(sender: System.Object; e: System.EventArgs);
CurChair.ChairName := TextBox1.Text;
CurChair.ChairHeadSNP := TextBox2.Text;
CurChair.ChairSecrSNP := TextBox3.Text;
Close;
end;
Эта процедура аналогична операции добавления, за исключением того, что мы не создаем новый объект, а оперируем с существующим объектом.
Запустим приложение, проверим функцию редактирования кафедры (см. Рисунок 10 .78)
Рисунок 10.78 – Редактирование объекта в отдельном окне
По аналогии настроим редактирование преподавателя и дисциплины. Обратим внимание, что при оперировании с целочисленными значениями необходимо перевести их в значение типа stringпри выводе, используя функциюToString:
TextBox3.Text := CurLect.MaxAmountHours.ToString;
Обратное преобразование производится применением функции Convert.ToInt32:
CurLect.MaxAmountHours := Convert.ToInt32(TextBox3.Text);