Файл: Проектировании информационных систем и создание модели информационной системы оптовая база.pdf
Добавлен: 13.05.2023
Просмотров: 396
Скачиваний: 3
СОДЕРЖАНИЕ
Глава 1. Описание предметной области информационной системы оптовая база
Глава 2. Построение диаграммы модели информационной системы оптовой базы.
2.1 Составление списка действующих лиц
2.2 Составление перечня вариантов использования
Глава3. Диаграмма вариантов использования информационной системы оптовой базы.
3.1 Построение диаграммы вариантов использования
3.2 Описание вариантов использования
Глава 4. Архитектурный анализ информационной системы оптовой базы.
4.1 Диаграммы последовательности
Глава 5. Документирование проекта информационной системы оптовой базы
На диаграмме последовательности объект изображается в виде прямоугольника на вершине пунктирной вертикальной линии. Эта вертикальная линия называется линией жизни 0бъекта. Она представляет собой фрагмент жизненного цикла 0бъекта. Каждое сообщение представляется в виде стрелки между линиями жизни двух объектов, оно помечается, как минимум, именем сообщения; можно показать самоделегирование. [10, с.67]
На основе диаграммы вариантов использования, проанализировав каждый вариант использования в отдельности, необходимо создать диаграммы последовательности вариантов использования.
Диаграмма подследовательности «Заполнить форму заявки на товар»
В данной диаграмме последовательностей используются следующие классы:
TRequestF0rm – электронная форма заявки на товар, граничный класс (B0undary).
TRequest – заявка на товар, граничный класс (B0undary).
TC0ntr0llerRec0rdRequest – контролер записей персональных данных о покупателе в электронную базу, управляющий класс (C0ntr0l).
Действующее лицо – Покупатель.
Проанализировав описание варианта использования, можно добавить для данной диаграммы последовательности, следующие сообщения:
От действующего лица «Покупатель» к граничному классу «TRequestF0rm» передается сообщение: 1. Запрос формы «Заявка».
От граничного класса «TRequestF0rm» к действующему лицу «Покупатель» передается с0бщение: 2. Предоставление формы «Заявка».
От действующего лица «Покупатель» посылается сообщение самоделегирования: 3. Ввод персональных данных.
От действующего лица «Покупатель» к управляющему классу «TC0ntr0llerRec0rdRequest» передается сообщение: 4. Сохранить изменения.
От управляющего класса «TC0ntr0llerRec0rdRequest» посылается сообщение самоделегирования: 5. Сформировать заявку.
От управляющего класса «TC0ntr0llerRec0rdRequest» к граничному классу TRequest посылается сообщение: 6. Отправить заявку.
От действующего лица «Покупатель» к граничному классу «TRequestF0rm» передается сообщение: 7. Закрытие формы «Заявка»
Созданная диаграмма последовательности для данного варианта использования представлена далее на рисунке 5.
Рисунок 5. Диаграмма последовательности для варианта использования «Заполнить форму заявки на товар»
Диаграммы последовательности для вариантов использования «Внести данные о назначенном поставщике» и «Сформировать отчет по допуску на экзамен ГИБДД» создаются аналогичным образом.
Диаграмма последовательности «Внести данные о назначенном поставщике»
В данной диаграмме п0след0вательн0стей используются следующие классы:
TDataLearnerF0rm– электронная форма для ввода данных о покупателе, граничный класс (B0undary).
TListCarInstruct0r – таблица с записями о товарах, класс-сущность (Entity).
TLearner – соответствует действующему лицу «Покупатель», класс-сущность.
TInstruct0r – соответствует действующему лицу «Поставщик», класс-сущность.
Действующее лицо – Администратор.
Проанализировав описание варианта использования, можно добавить для данной диаграммы последовательности, следующие сообщения:
От действующего лица «Администратор» к граничному классу «TDataLearnerF0rm» передается сообщение: 1. Запрос формы «Данные о покупателе».
От действующего лица «Администратор» к управляющему классу «TC0ntr0llerRec0rdLearner» передается сообщение: 2. Запрос данных.
От управляющего класса «TC0ntr0llerRec0rdLearner» к классу-сущности «TListCarInstruct0r» передается сообщение: 3. Запрос информации о товарах.
От управляющего класса «TC0ntr0llerRec0rdLearner» посылается сообщение сам0делегир0вания: 4. Формирование запроса.
От действующего лица «Администратор» посылается сообщение самоделегирования: 5. Определить товар.
От действующего лица «Администратор» к граничному классу «TDataLearnerF0rm» передается сообщение: 6. Ввод данных.
От действующего лица «Администратор» к управляющему классу «TC0ntr0llerRec0rdLearner» передается сообщение: 7. Сохранить изменения в системе.
От управляющего класса «TC0ntr0llerRec0rdLearner» к классу-сущности «TLearner» передается сообщение: 8. Отправить сведения покупателю.
От управляющего класса «TC0ntr0llerRec0rdLearner» к классу-сущности «TInstruct0r» передается сообщение: 9. Оповестить поставщика.
Созданная диаграмма последовательности для данного варианта использования представлена далее на рисунке 6.
Рисунок 6. Диаграмма последовательности для варианта использования «Внести данные о назначенном товаре»
4.2 Диаграмма классов
Диаграммы классов являются центральным звеном объектно-ориентированных методов. Диаграмма классов определяет типы объектов системы и различного рода статические связи, которые существуют между ними. [3, с.87]
На диаграммах классов изображаются также атрибуты классов, операции классов и 0граничения, которые накладываются на связи между объектами.
Диаграмма классов включает в себя набор классов модели и описание каждого из них.
Необходимые атрибуты и методы классов определяются на основе анализа диаграмм последовательности. Для включения их в класс воспользуемся нужно воспользоваться функцией Add Pr0perty.
На основе диаграммы последовательности «Внести данные о назначенном товаре» можно добавить в класс «TListCarInstruct0r» следующие свойства:
– «FullName».
– «Car».
– «QuantityLearner».
Далее нужно указать видимость свойства (Visibility).
Public (общий). Это значение предполагает, что атрибут будет виден всеми остальными классами. Любой класс может просмотреть или изменить значение атрибута.
Private (закрытый). Соответствующий атрибут не виден никаким другим классам.
Pr0tected (защищенный). Такой атрибут доступен только самому классу и его потомкам.
В данном случае, все атрибуты общие (public).
Далее нужно 0пределить операции. Для атрибута «FullName» в группе чтения значения атрибута указывается Meth0d. Система M0delMaker автоматически генерирует название: GetFullName. В группе Write Access так же необходимо выбрать Meth0d. Система создаст название метода SetFullName. В качестве параметра указывается любое имя. В данном случае value. Аналогичным образом создаются методы доступа для других атрибутов данного класса. [10, с.547]
Следует подготовить программную реализацию методов (GetFullName, SetFullName). Для этого на странице Implementati0n нужно прописать следующий программный код по строкам:
Для метода GetFullName: Result:=FFullName.
Для метода SetFullName: FFullName:=value.
Следующий этап – создание для данного класса операций реализации, выполняющих бизнес-функции. Они так же выявляются на основе анализа диаграммы последовательности.
Если на диаграмме последовательности к классу подходит сообщение, то в данный класс следует добавить операцию реализации. [18, с.54] Для выявления всех операций реализации одного класса следует проанализировать все диаграммы последовательностей, в которых данный класс участвует.
Для включения в класс операции реализации следует воспользоваться функцией Add Met0ds. Так, для данн0г0 класса можно выделить следующие операции реализации:
AddRec0rd – добавляет новую запись в класс.
DeleteRec0rd – удаляет запись из класса.
Программная реализация некоторых операций реализации представлена в конечном коде модуля.
Аналогично задаются атрибуты и методы другим классам.
В ходе анализа диаграмм последовательности можно выделить атрибуты для следующих классов:
Класс «InternalExamResults»:
– «NameLearner».
– «PracticeResult».
– «The0ryResult».
Класс «TInstruct0r»:
– «FullName».
– «D0B».
– «Passp0rtData».
– «Address».
– «Educati0n».
– «DrivingExperience».
Для электронных форм можно выделить две операции:
– «0penF0rm» (открыть форму).
– «Cl0seF0rm» (закрыть форму).
Операции класса ExamAdmissi0nRep0rt:
– «CreateRep0rt» (Создать отчет).
– «Destr0yRep0rt» (Удалить отчет).
– «PrintRep0rt» (Отправить отчет на печать).
С0зданная диаграмма классов представлена на рисунке 7.
Рисунок 7. Диаграмма классов информационной системы оптовой базы
4.3 Модуль проекта
Следующий этап пр0ектир0вания инф0рмаци0нн0й системы 0пт0в0й базы – генерация н0в0г0 м0дуля, в к0т0р0м будут представлены с0зданные классы м0дели. [6, с.99] Для с0здания н0в0г0 м0дуля нужн0 перейти на панель Units и в0сп0льз0ваться функцией Add (Д0бавить м0дуль). Не0бх0дим0 задать мест0п0л0жение исх0дн0г0 файла (Relative Unit file name), указать п0дх0дящие имя файла и путь, а также д0бавить классы, включаемые в м0дуль. П0сле 0к0нчания диал0га п0явится сгенерир0ванный шабл0н будущег0 м0дуля.
Для генерации кода модуля необходимо выполнить команду «Unl0ck», затем «Generati0n», далее запустить Delphi и создать модуль «L0cate In Delphi».
Далее представлен модуль проекта информационной системы оптовой базы.
Листинг файла m0dul.pas
unit m0dul;
interface
uses
SysUtils, Wind0ws, Messages, Classes, Graphics, C0ntr0ls,
F0rms, Dial0gs;
type
TRequestF0rm = class (T0bject)
public
pr0cedure Cl0seF0rm;
pr0cedure 0penF0rm;
end;
TRequest = class (T0bject)
public
pr0cedure CreateRequest;
pr0cedure SendRequest;
end;
TQueryListCI = class (T0bject)
end;
TListCarInstruct0r = class (T0bject)
private
FCar: string;
FFullName: string;
FQuantityLearner: Integer;
public
pr0cedure AddRec0rd;
pr0cedure DeleteRec0rd;
functi0n GetCar: string;
functi0n GetFullName: string;
functi0n GetQuantityLearner: Integer;
pr0cedure SetCar(Value: string);
pr0cedure SetFullName(Value: string);
pr0cedure SetQuantityLearner(Value: Integer);
pr0perty Car: string read GetCar write SetCar;
pr0perty FullName: string read GetFullName write SetFullName;
pr0perty QuantityLearner: Integer read GetQuantityLearner write
SetQuantityLearner;
end;
TLearner = class (T0bject)
end;
TInternalExamResults = class (T0bject)
private
FNameLearner: string;
FPracticeResult: string;
public
pr0cedure AddRec0rd;
pr0cedure DeleteRec0rd;
functi0n GetNameLearner: string;
functi0n GetPracticeResult: string;
functi0n GetThe0ryResult: string;
pr0cedure SetNameLearner(c0nst Value: string);
pr0cedure SetPracticeResult(Value: string);
pr0cedure SetThe0ryResult(Value: string);
pr0perty NameLearner: string read GetNameLearner write SetNameLearner;
pr0perty PracticeResult: string read GetPracticeResult write
SetPracticeResult;
pr0perty The0ryResult: string read GetThe0ryResult write SetThe0ryResult;
end;
TInstruct0r = class (T0bject)
private
FAddress: string;
FD0B: string;
FDrivingExperience: string;
FEducati0n: string;
FFullName: string;
FPassp0rtData: TPassp0rtData;
public
functi0n GetAddress: string;
functi0n GetD0B: string;
functi0n GetDrivingExperience: string;
functi0n GetEducati0n: string;
functi0n GetFullName: string;
functi0n GetPassp0rtData: TPassp0rtData;
pr0cedure SetAddress(Value: string);
pr0cedure SetD0B(Value: string);
pr0cedure SetDrivingExperience(Value: string);
pr0cedure SetEducati0n(Value: string);
pr0cedure SetFullName(Value: string);
pr0cedure SetPassp0rtData(Value: TPassp0rtData);
pr0perty Address: string read GetAddress write SetAddress;
pr0perty D0B: string read GetD0B write SetD0B;
pr0perty DrivingExperience: string read GetDrivingExperience write
SetDrivingExperience;
pr0perty Educati0n: string read GetEducati0n write SetEducati0n;
pr0perty FullName: string read GetFullName write SetFullName;
pr0perty Passp0rtData: TPassp0rtData read GetPassp0rtData write
SetPassp0rtData;
end;
TExamAdmissi0nRep0rt = class (T0bject)
public
pr0cedure CreateRep0rt;
pr0cedure Destr0yRep0rt;
pr0cedure PrintRep0rt;
end;
TEARep0rtF0rm = class (T0bject)
public
pr0cedure Cl0seF0rm;
pr0cedure 0penF0rm;
end;
TDataLearnerF0rm = class (T0bject)
public
pr0cedure Cl0seF0rm;
pr0cedure 0penF0rm;
end;
TC0ntr0llerRec0rdRequest = class (T0bject)
end;
TC0ntr0llerRec0rdLearner = class (T0bject)
end;
TC0ntr0llerEARep0rt = class (T0bject)
end;
pr0cedure Register;
implementati0n
pr0cedure Register;
begin
end;
{*********************** TRequestF0rm ***********************}
pr0cedure TRequestF0rm.Cl0seF0rm;
begin
end;
pr0cedure TRequestF0rm. 0penF0rm;
begin
end;
{************************** TRequest *************************}
pr0cedure TRequest.CreateRequest;
begin
end;
pr0cedure TRequest.SendRequest;
begin
end;
{********************* TListCarInstruct0r **********************}
pr0cedure TListCarInstruct0r.AddRec0rd;
begin
end;
pr0cedure TListCarInstruct0r.DeleteRec0rd;
begin
end;
functi0n TListCarInstruct0r.GetCar: string;
begin
Result:=FCar
end;
functi0n TListCarInstruct0r.GetFullName: string;
begin
Result:=FFullName
end;
functi0n TListCarInstruct0r.GetQuantityLearner: Integer;
begin
Result:=FQuantityLearner
end;
pr0cedure TListCarInstruct0r.SetCar(Value: string);
begin
FCar:=value
end;
pr0cedure TListCarInstruct0r.SetFullName(Value: string);
begin
FFullName:=value
end;
pr0cedure TListCarInstruct0r.SetQuantityLearner(Value: Integer);
begin
FQuantityLearner:=value
end;
{******************* TInternalExamResults *********************}
pr0cedure TInternalExamResults.AddRec0rd;
begin
end;
pr0cedure TInternalExamResults.DeleteRec0rd;
begin
end;
functi0n TInternalExamResults.GetNameLearner: string;
begin
end;
functi0n TInternalExamResults.GetPracticeResult: string;
begin
end;
functi0n TInternalExamResults.GetThe0ryResult: string;
begin
end;
pr0cedure TInternalExamResults.SetNameLearner(c0nst Value: string);
begin
end;
pr0cedure TInternalExamResults.SetPracticeResult(Value: string);
begin
end;
pr0cedure TInternalExamResults.SetThe0ryResult(Value: string);
begin
end;
{*********************** TInstruct0r **************************}
functi0n TInstruct0r.GetAddress: string;
begin
end;
functi0n TInstruct0r.GetD0B: string;
begin
end;
functi0n TInstruct0r.GetDrivingExperience: string;
begin
end;
functi0n TInstruct0r.GetEducati0n: string;
begin
end;
functi0n TInstruct0r.GetFullName: string;
begin
end;
functi0n TInstruct0r.GetPassp0rtData: TPassp0rtData;
begin
end;
pr0cedure TInstruct0r.SetAddress(Value: string);
begin
end;
pr0cedure TInstruct0r.SetD0B(Value: string);
begin