- •«Технологии разработки программного обеспечения»
- •Оглавление
- •Введение
- •Анализ проблемы. Постановка задачи
- •Введение
- •Описание примера
- •Составление списка заинтересованных лиц
- •Анкетирование и проведение интервью
- •Список потребностей заинтересованных лиц
- •Задания
- •Контрольные вопросы
- •Моделирование объекта автоматизации
- •Введение
- •Введение в методологию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
- •Программное добавление объекта
- •Программное удаление объекта
- •Программное редактирование объекта
- •Работа со справочником
- •Поиск объектов
- •Задания
- •Контрольные вопросы
- •Заключение
- •Библиографический список
Форма редактирования параметров студента
Эта форма должна позволять пользователю задавать параметры студентов при добавлении новых студентов и редактировании старых (см. Рисунок 6 .40).
Рисунок 6.40 – Форма редактирования параметров студента
Форма редактирования книг
Форма должна позволять пользователю задавать параметры книги при редактировании и изменять параметры существующих книг (см. Рисунок 6 .41).
Рисунок 6.41 – Форма редактирования параметров книг
Форма отображения списка книг
Форма должна отображать список всех книг, для того чтобы можно было выбрать книгу при выдаче её студенту (см. Рисунок 6 .42).
Рисунок 6.42– Форма отображения списка книг
После создания форм необходимо подключить классы для этого необходимо их создать и использовать.
Подключение классов
После создания форм к интерфейсу нужно подключить классы. Для этого в главной форме проекта реализуем два события:
OnCreate– по этому событию создаётся объектTConnection, выполняется подключение к БД, и создаются объекты класса бизнес логики.
OnClose– по этому событию удаляются все созданные объекты.
Для создания событий:
выберите объект в конструкторе форм, для которого вы хотите создать событие;
откройте вкладку Events в области инспектора
найдите требуемое событие и дважды щелкните по нему, при этом откроется редактор исходного кода на месте только что созданного события.
Пример кода для события OnCreateнашего приложения представлен ниже:
var
//Объявление переменной класса по работе с ini файлами
ini: tinifile;
// Объявление переменных для хранения параметров подключения
servername, path: string;
begin
try
//Подключение к ini – файлу
ini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'config.ini');
// Чтение имени сервера, к которому необходимо подключиться, если
// он пустой значит не введен
if ini.ReadString('options','servername','')='' then
begin
servername:='localhost';
//Отображение диалога ввода имени сервера
if InputQuery('Введите имя сервера','',servername) then
begin
// Запись имени сервера в ini - файл
ini.WriteString('options','servername',servername);
end;
end;
// Чтение имени сервера
servername:=ini.ReadString('options','servername','');
// Чтение пути к файлу БД, если он пуст.
if ini.ReadString('options','path','')='' then
begin
// Вывод диалога ввода пути к файлу БД
if InputQuery('Введите путь к файлу БД','',path) then
begin
// Запись пути к файлу БД в ini - файл
ini.WriteString('options','path',path);
end;
end;
// Чтение пути к файлу БД из ini - файла
path:=ini.ReadString('options','path','');
try
// Создание объекта подключения
fConnection:=TConnection.Create;
// Установка параметров поключения
fConnection.ServerName:=servername;
fConnection.DataBaseName:=path;
fConnection.UserName:='SYSDBA';
fConnection.Password:='masterkey';
// ПодключениекБД
fConnection.Connect;
except
// В случае установки неправильных параметров подключения возникнет исключительная ситуация
ShowMessage('Неправильные параметры подключения');
// Освобождение объекта подключения
freeandnil(fConnection);
// Закрытие формы приложения
fmMain.Close;
// Закрытие приложения
Application.Terminate;
// Выход из события
Exit;
end;
finally
// Удаление из памяти переменной класса по работе с ini - файлом
FreeAndNil(ini);
end;
// Создание класса слоя Бизнес – логики по работе со студентами
fStudents:=TStudents.Create(fConnection,fConnection.TransactionObject);
// Установка источника данных для сетки строк, отображающей список // студентов
dbgStudents.DataSource:=fStudents.DataSource;
// Выбор данных
fStudents.Select;
// Создание класса слоя Бизнес – логики по работе с книгами
fBooks:=TBook.Create(fConnection,fConnection.TransactionObject);
// Установка источника данных для сетки строк, отображающей список книг
dbgBooks.DataSource:=fBooks.DataSource;
// Выбор данных
fBooks.Select;
// Создание класса слоя Бизнес – логики по работе с выданными книгами
fStudentBook :=TStudentBook.Create(fConnection, fConnection.TransactionObject);
// Установка события происходящего при перемещении между записями
fStudents.OnAfterScroll:=StudentsAfterScroll;
// Загрузка параметров выбранного студента в поля объекта
fStudents.LoadCurrent;
// Установка полей объекта
fStudentBook.fk_student:=fStudents.id;
// Выбор данных
fStudentBook.Select;
// Установка источника данных для сетки строк, отображающей список // выданных книг
dbgStudentsBook.DataSource:=fStudentBook.DataSource;
end;
Для каждого действия в компоненте TActionManagerнеобходимо реализовать событиеOnExecute, в котором будет происходить вызов классов слоя бизнес-логики. Например:
Try
// Загрузка параметров выбранного студента в поля объекта
fStudents.LoadCurrent;
// Создание формы
fmChangeStudent:=TfmChangeStudent.Create(Application);
with fmChangeStudent do
begin
// Заполнение значений компонентов на форме
seNum.Value:=fStudents.Num;
edFamily.Text:=fStudents.Family;
edName.Text:=fStudents.Name;
edSecondName.Text:=fStudents.SecondName;
// Заполнения списка отображаемого в компоненте TComboBox
cbGroup.Items.AddStrings(fStudents.GroupList);
// Установка значения отображаемого в компоненте TComboBox
cbGroup.ItemIndex:=cbGroup.Items.IndexOf(fStudents.Group);
end;
// Если пользователь нажал кнопку Принять
if fmChangeStudent.ShowModal=mrOk then
begin
// Заполнение полей объекта
with fStudents do
begin
Num:=fmChangeStudent.seNum.Value;
Family:=fmChangeStudent.edFamily.Text;
Name:=fmChangeStudent.edName.Text;
SecondName:=fmChangeStudent.edSecondName.Text;
Group:=fmChangeStudent.cbGroup.Text;
// Вызов метода обновляющего запись в таблице
Update;
end;
end;
finally
//Удаление из памяти формы
FreeAndNil(fmChangeStudent);
end;