
- •Проектирование информационных систем Учебное пособие
- •Оглавление
- •1. Методологии и технологии проектирования ис
- •2. Методология rad
- •3. Структурный подход в проектировании информационных систем
- •3.1 Методология функционального моделирования
- •Основные методологии обследования организаций
- •Основные элементы и понятия idef0
- •Особенности национальной практики применения функционального моделирования средствами idef0
- •3.2. Моделирование данных
- •3.3. Диаграммы потоков данных
- •Внешние сущности
- •Системы и подсистемы
- •Накопители данных
- •Потоки данных
- •4. Объектно-ориентированный подход в проектировании информационных систем
- •4.1. Основные понятия объектно-ориентированного программирования
- •4.2. Основные понятия объектно-ориентированного проектирования
- •5. Унифицированный язык моделирования uml
- •5.1. Основные сведения
- •5.2. Диаграммы вариантов использования
- •5.3. Диаграммы взаимодействия
- •5.4. Диаграммы классов
- •6. Инструментальные средства разработки информационных систем
- •6.1. Общая характеристика Case – средств проектирования информационных систем
- •6.2. ModelMaker как средство визуального проектирования концептуальной модели информационной системы
- •6.3. Выполнение учебного проекта с использованием case – средства ModelMaker
- •6.3.1. Постановка задачи проектирования системы регистрации для учебного заведения
- •Составление глоссария проекта
- •Описание дополнительных спецификаций
- •6.3.2. Создание главной диаграммы модели информационной системы
- •6.3.3. Составление списка вариантов использования
- •Вариант использования «Войти в систему» Login
- •Вариант использования «Зарегистрироваться на курсы» (Register for Courses)
- •Вариант использования «Закрыть регистрацию» (Close Registration)
- •6.3.4. Анализ системы
- •6.3.5. Распределение поведения, реализуемого вариантом использования, между классами
- •6.3.6. Построение диаграммы классов и модуля проекта
- •6.3.7. Документирование работы
- •8. Курсовое проектирование
- •Цели и задачи курсового проектирования
- •8.2. Тематика и примерная структура курсовой работы
- •8.3. Задания к курсовой работе
- •Заключение
- •Глоссарий
- •Библиографический список
- •Проектирование информационных систем
6.3.6. Построение диаграммы классов и модуля проекта
Диаграмма классов (Class diagram) включает в себя набор классов модели и описание каждого из них. Разрешается также добавлять и удалять отдельные классы. Между классами можно организовывать необходимые UML – связи.
В справочной системе ModelMaker через команды Help/Contents/Diagram Editor/Class diagrams просмотрите пример диаграммы классов.
Каждый класс на диаграмме отображается в некотором стиле, определенном настройками ModelMaker. Текущий стиль класса можно
изменить через двойной щелчок. Настройка стиля выполняется на вкладке Symbol style открывающегося диалогового окна.
Упражнение 9. Создание диаграммы классов модели
Маркируйте в левом верхнем углу вкладку «Diagrams» и через кнопку «Add class diagram» создайте в главном окне новую диаграмму классов;
Перейдите на вкладку «Classes» и просмотрите в браузере список объявленных Вами ранее классов;
Вернитесь к созданному пустому окну диаграммы классов. Перетащите мышью из браузера несколько классов в окно диаграммы классов;
Сделайте активным один из классов, (например, класс – сущность). Этому классу зададим необходимые атрибуты и методы. Прежде всего, после двойного щелчка перейдем на вкладку Symbol style. Затем в раскрывающемся списке Member list style (Список стилей элементов) выберем значение Auto Member list. После этого станут доступными дополнительные флажки элементов (Field, Properties, Events, Methods), которые могут входить в класс. Раскрывающийся список Member visibility filter (Фильтр видимости элементов класса) определяет видимость составляющих класса. Неактивные состояния отдельных флажков редактора класса означают использование настроек родительской диаграммы, на основе которой создавалась данная диаграмма.
Рисунок 32 – Диаграмма последовательности «Базовые действия» для варианта использования «Зарегистрироваться на курсы»
Добавим активному классу новые атрибуты и методы, устанавливающие его функциональность. Необходимые атрибуты и методы классов определяются на основе анализа диаграмм последовательностей и описания предметной области. Для включения их в класс воспользуемся кнопками просмотрщика интерфейса классов, находящегося в нижнем левом углу окна. Кнопка Add Property (добавить свойство) открывает диалоговое окно создания в классе нового свойства. Добавим в один из классов новое свойство. В названии типа свойства следует выбрать значение User Defined (Определяемое пользователем);
Далее необходимо указать имя свойства (например, Fio) и его видимость (Visibility). Будем задавать следующие значения видимости: private – доступность только из модуля, в котором класс описан; protected - доступность из модуля описания класса и классов - наследников; public – полная доступность; published - полная доступность с возможностью редактирования на этапе проектирования.
Рисунок 33 – Диаграмма последовательности «Создать график» для варианта использования «Зарегистрироваться на курсы»
Флажок Property Override (Перезапись родительского свойства) следует отключить, так как свойства будем считать оригинальными, а не наследуемыми от другого класса.
В группе Read Access (чтение значения атрибута) выберем Method (Метод). В ответ система автоматически сгенерирует название метода GetFio, предназначенного для доступа к значению свойства. Первыми символами в его имени будут Get;
Выберем также в группе Write Access создаваемого свойства значение Method. Система создаст название метода (SetFio), предназначенного для записи значения свойства. Первыми символами в его имени будут Set. Параметр метода задается в списке Write parametr. Укажите любое имя (например, Avalue);
Чтобы иметь доступ к данному полю внутри класса следует включить флажок State Field (Статическое поле);
После завершения диалога получим новое свойство класса Fio, статическое свойство FFio и два метода (GetFio и SetFio). Статическое свойство FFio является внутренней переменной данного свойства, первым символом имени всегда является F. Эта переменная используется для сохранения значения свойства. Фрагмент диаграммы классов представлен на рисунке 34. В данной диаграмме атрибуты и операции определены только для двух классов. На рисунке 35 представлено окно ModelMaker, в котором видны браузер с перечнем классов, окно просмотрщика интерфейса классов и фрагмент диаграммы классов.
Далее следует подготовить программную реализацию двух методов, заготовки которых мы создали в п.8,9. Для этого маркируем один из методов и переходим со страницы Diagram Editor на страницу Implementation. Ввод команд производится построчно. Сначала выбирают строку (новая формируется через команду Add section), затем переходят в правую часть окна и набирают оператор. Затем кнопкой Save code вводят текст. Он скопируется в левую часть окна. Например, для метода GetFio запишем команду
Result:=FFio
Для метода SetFio запишем
Ffio:=Avalue
Аналогично создадим для данного класса другие необходимые свойства.
Далее создадим для данного класса операции реализации, выполняющие бизнес-функции. Их следует выявить на основе анализа диаграмм последовательностей.
Если на диаграмме последовательности к классу подходит сообщение, то в данный класс следует добавить операцию реализации. Для выявления всех операций реализации одного класса следует проанализировать все диаграммы последовательностей, в которых данный класс участвует. Для включения в класс операции реализации следует щелкнуть по кнопке Add Metods, задать имя операции и выполнить диалог по аналогии с п.11. Для одной операции создайте программный код, реализующий необходимую бизнес-функцию, а для остальных операций можно ограничиться формированием заготовок подпрограмм.
Затем по аналогии создадим для данного класса и остальных классов необходимые атрибуты и операции.
Теперь сгенерируем новый модуль, в котором будут представлены созданные классы модели. Для создания нового модуля перейдем на панель Units Просмотрщика классов и нажмем кнопку Add (Добавить модуль). В поле, где задается местоположение исходного файла (Relative Unit file name), укажем подходящие имя файла и путь. В нижней части окна переместим в правую часть названия классов, включаемых в модуль. После окончания диалога появится сгенерированный шаблон будущего модуля.
Рисунок 34 – Фрагмент диаграммы классов модели информационной системы регистрации для учебного заведения
Для генерации конечного кода модуля следует щелкнуть по кнопке Unlock, затем нажать кнопку Generation. Далее необходимо запустить Delphi, затем вернуться к ModelMaker и нажать кнопку Locate In Delphi. В результате получим шаблон модуля, который мы создали средствами объектно – ориентированного проектирования и визуального моделирования с помощью CASE – системы ModelMaker. Созданный модуль можно добавить в разрабатываемый проект. Программный код созданного модуля приведен ниже. В нем описаны все классы, представленные на диаграмме классов, а также шаблоны заявленных процедур и функций. Их следует дополнить конкретным содержанием, что относится уже к программированию, а не проектированию.
Далее в разрабатываемый проект можно включать объекты, являющиеся экземплярами разработанных нами классов.
Рисунок 35 – Окно ModelMaker с браузером с перечнем классов, просмотрщиком интерфейса классов и фрагментом диаграммы классов
Программный код модуля, созданного средствами средствами объектно-ориентированного проектирования и визуального моделирования с помощью CASE-системы ModelMaker
unit Modul1;
interface {Раздел описаний модуля}
uses
SysUtils, Windows, Messages, Classes, Graphics, Controls,
Forms, Dialogs;
type
IInterface = interface ()
['{00000000-0000-0000-C000-000000000046}']
function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
function _AddRef: Integer; stdcall;
function _Release: Integer; stdcall;
end;
IUnknown = interface ()
['{00000000-0000-0000-C000-000000000046}']
function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
function _AddRef: Integer; stdcall;
function _Release: Integer; stdcall;
end;
TCourseCatalogSystem = class (TObject)
end;
TObject = class ()
public
constructor Create;
destructor Destroy; virtual;
end;
TProfessor = class (User)
end;
TRegisterForCoursesForm = class (TObject)
end;
TRegistrationController = class (TObject)
end;
TSchedule = class (TObject)
end;
TStudent = class (User)
private
FAdress: TAdress;
FFio: Integer;
FGruppa: TGruppa;
function GetAdress: TAdress;
procedure SetAdress(AValue: TAdress);
public
procedure AddSchedule;
procedure DeleteSchedule;
procedure Get_Schedule;
property Adress: TAdress read GetAdress write SetAdress;
property Fio read FFio write FFio;
property Gruppa: TGruppa read FGruppa write FGruppa;
end;
User = class (TObject)
private
FFio: Integer;
function GetFio: Integer;
procedure SetFio(AValue: Integer);
public
property Fio: Integer read GetFio write SetFio;
end;
procedure Register;
implementation {Исполняемый раздел модуля}
procedure Register;
begin
end;
{******* TObject **************************}
constructor TObject.Create;
begin
end;
destructor TObject.Destroy;
begin
end;
{******** TStudent ****************************}
procedure TStudent.AddSchedule;
begin
end;
procedure TStudent.DeleteSchedule;
begin
end;
function TStudent.GetAdress: TAdress;
begin
end;
procedure TStudent.Get_Schedule;
begin
end;
procedure TStudent.SetAdress(AValue: TAdress);
begin
end;
{************* User*********** ******}
function User.GetFio: Integer;
begin
Result:=FFio
end;
procedure User.SetFio(AValue: Integer);
begin
FFio:=Avalue
end;
end.