Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

4966

.pdf
Скачиваний:
3
Добавлен:
13.11.2022
Размер:
854.74 Кб
Скачать

81

Графически диаграмма деятельности является блок-схемой выполнения элементарных операций в контексте состояния объекта. Пример диаграммы деятельностей приведён на рисунке 24.

Описанные выше диаграммы (прецедентов, классов, объектов, взаимодействия, состояний, деятельностей) могут являться достаточными в тривиальных случаях, а также в учебных целях создания прототипов классов для одной стадии проекта. На основании этих типов диаграмм уточняются перечень и состав справочных классов предметной области, формируются искусственные активные классы – менеджеры сообщений и т.д. Остальные типы диаграмм UML в указанных случаях являются избыточными, так как носят характер уточняющих моделей программных систем. Исключение составляют диаграммы узлов и развёртывания, так как описывают порядок работы исполняемых программных модулей.

Автор настоящего пособия не ставил целью изложение методической и последовательной проработки всех стадий проектирования программных систем. Для получения более подробных сведений автор рекомендует воспользоваться специальной справочной литературой (см.[14],[15],[16]) по языку UML. В краткой форме приведём описание диаграмм кооперации, компонентов и диаграмм развёртывания.

Диаграммы кооперации (collaboration diagrams) представляют разновидность (экземпляр) диаграммы взаимодействия между объектами и отношения объектов друг к другу в виде графа, состоящего из объектов и соединяющих дуг с обозначенными на них событиями. Данный граф предназначен для визуализации взаимодействия объектов в контексте вариантов использования.

 

82

Пакет

 

Подача документов в

вуз

Начальное

 

 

состояние

 

Собрать комплект документов

Состояния

Написать заявление о приёме

 

действия

 

 

Сделать сверку документов по списку

 

Сдать комплект в приёмную комиссию

 

Комплект не принят

 

Комплект принят

 

Получить расписку

 

конечное

 

состояние

 

Рисунок 24 − Диаграмма деятельностей

Основной акцент в диаграмме кооперации сделан на структурной организа-

ции объектов, посылающих и получающих сообщения. Данная диаграмма, в от-

личие от диаграммы последовательностей, не отражает взаимодействие объектов

в зависимости от времени, но показывает другие нюансы: кратность объектов

(связь один ко многим, например, сотрудник − должности); направление связи

83

(направление передачи сообщения); структурная организация объектов, посылающих и принимающих сообщения. Данный граф показывает объекты, участвующие в процессе выполнения определённого варианта использования включая объекты, косвенно затронутые этим взаимодействием.

Диаграммы компонентов иллюстрируют, как классы соотносятся с готовыми физическими компонентами системы. Диаграмма отражает принцип наращивания функционала ядра системы основанный на идее полиморфизма. Из диаграмм компонентов и размещения можно сделать выводы о составе программного комплекса в виде .ЕХЕ и .DLL и других файлов, а также место их размещения в информационных сетях. Компонент − это физическая заменяемая часть системы, которая соответствует некоторому набору интерфейсов и обеспечивает его реализацию. Компонент, как правило, представляет собой физическую упаковку логических элементов, таких, как классы, интерфейсы и кооперации. Графически компонент изображается в виде прямоугольника с вкладками и именем. Пример изображения компонента приведён на рисунке 25.

Диаграмма развёртывания − диаграмма, на которой представлена конфигурация обрабатывающих узлов и размещённые на них компоненты, составляющие физическую систему. Диаграмма развёртывания может содержать в качестве узлов: компьютеры корпоративной сети; коммуникационное оборудование; оргтехнику (факсимильные устройства, принтеры, копиры, сканеры и т.д.); многоканальные телефонные станции и другие. Более того, каждое устройство может функционировать как автономно, так и в составе корпоративной сети.

monitor.exe

Рисунок 25 – Пример изображения компонента

Диаграмма развёртывания предназначена для визуализации элементов и компонентов программы, существующих только на этапе ее исполнения. При этом представляются только те компоненты программы, которые являются исполнимыми файлами или динамическими библиотеками. Компоненты (например, исходные тексты программ), не используемые на этапе исполнения, на диаграмме развёртывания не показываются. Пример узлов приведён на рисунке 26.

84

Диаграммы размещения отражают физические взаимосвязи между программными и аппаратными компонентами системы, а также используются для изображения маршрутов перемещения объектов в распределенной системе обработки данных. Диаграммы размещения применяют также для визуализации проекта распределённых систем и привязки исполнительных компонентов к узлам системы.

Распределённые узлы локальной сети

 

Сервер

Сервер

Сервер

СУБД

почтовый

доступа

 

Рисунок 26 – Диаграмма развёртывания

Контрольные вопросы и задания

1.Что является целью объектно-ориентированного проектирования?

2.В чём заключаются особенности объектно-ориентированного проектирования?

3.В чём состоит назначение языка UML?

4.Перечислите основные группы элементов языка UML, каково их назначение?

5.С какой целью и посредством каких элементов языка UML осуществляется семантическая связь между диаграммами?

6.Каково назначение диаграммы вариантов использования?

7.Каково назначение сценария и в чём состоят особенности его составления?

8.Перечислите отношения в диаграмме вариантов использования.

9.Каково назначение диаграммы классов?

10.Перечислите отношения в диаграмме классов.

11.Каково назначение диаграммы последовательностей?

12.Перечислите отношения диаграммы последовательностей.

13.Каково назначение диаграмм состояний?

14.Перечислите отношения диаграммы состояний.

15.Каково назначение диаграммы деятельностей?

16.В чём различие диаграмм состояний и деятельностей?

85

ПРИЛОЖЕНИЕ А Пример объектной декомпозиции предметной области

Предметная область: «Автоматизация кассового обслуживания клиентов банка посредством банкомата".

Задача: выполнить объектную декомпозицию процесса «Идентификация клиента и предоставление выбора операций»

Этап №1. Сценарий процесса «Идентификация клиента и предоставление выбора операций»

Описание процесса в виде сценария безальтернативного варианта развития событий (т.е. с достижением клиентом желаемой цели – получением доступа к выбору операций со своим счётом):

1) операционная система банкомата, банкомат и удалённая связь с банком находятся в рабочем состоянии и в готовности обслужить запрос клиента;

2)идентификационная пластиковая карта клиента находится в приёмнике банкомата, после чего операционная система банкомата проверяет тип карты на соответствие типу данного банкомата и выводит сообщение с предложением клиенту ввести посредством клавиатуры свой идентификационный код (PINкод);

3)клиент вводит свой идентификационный код, операционная система банкомата считывает и проверяет введённый код на соответствие учётной записи о клиенте в банке;

4)идентификационный код соответствует учётной записи о клиенте и операционная система банкомата предоставляет клиенту интерфейс для выбора операций со своим счётом.

Примечание: сущности предметной области выделены подчёркиванием. Дальнейший ход развития событий должен сопровождаться дополнительны-

ми сценариями. Разработка каждого нового сценария будет являться началом новой стадией проекта и требовать полной доработки до состояния наличия всех требуемых артефактов (диаграмм, исходного кода, исполнительных файлов, файлов библиотек классов и прочих, рабочего интерфейса, документации, системы справки, помощи и сообщений об ошибках и т.д.).

Впроцессе анализа будет выполнено постепенное уточнение модели и удаление из первоначального списка тех сущностей, которые незначительны для цели идентификации клиента, описанной в сценарии получения доступа к выбору операций со своим счётом.

86

Этап №2. Выделение всех сущностей, свойств и операций

Таблица 1

 

Перечень сущностей

 

Перечень свойств

 

 

Перечень операций

1)

операционная система банкомата

1)

рабочее состояние

1)

проверяет тип карты

2)

банкомат

2)

тип карты

2)

проверяет введённый код

3)

удалённая связь

3)

PIN-код

3)

предоставляет клиенту

4)

банк

4)

типы операций

интерфейс

5)

состояние

5)

виды сообщений

3)4)

 

ввод данных

 

 

 

 

 

 

 

 

6)

запрос

6)

тип банкомата

 

посредством

7)

клиент

 

 

 

клавиатуры

8)

идентификационная пластиковая

 

 

4)5)

 

хранение учётной

 

 

 

 

 

 

 

 

 

карта

 

 

 

записи о клиенте

9)

приёмник банкомата

 

 

5)6)

 

 

ожи-

10)

идентификационный код (PIN-

 

 

 

дание ввода

 

 

код)

 

 

 

данных клиентом

11)

учётная запись о клиенте

 

 

6)7)

 

вывод сообщения

 

 

 

 

 

 

 

 

 

12)интерфейс

13)операция

14)счёт

Этап №3. Выделение сущностей предметной области задействованных в процессе идентификации клиента

Перечень сущностей, соответствующих поставленной цели:

1)операционная система (ОС) банкомата

2)идентификационная пластиковая карта (карта клиента)

3)клиент

4)банк

5)интерфейс

Этап №4. Выделение связей типа «сущность–свойства–операция»

Таблица 2

 

 

Наименование

Свойства

Выполняемые сущностью операции

сущности

сущности

 

Операционная си-

Тип банкомата

Проверяет тип карты

стема

 

Проверяет введённый код

банкомата

 

Предоставляет клиенту интерфейс

Карта клиента

Тип карты

Нет

Клиент

PIN-код

Ввод данных посредством клавиатуры

Банк

PIN-код

Хранит учётную запись

Интерфейс

Типы операций

Ожидает ввода данных клиента

 

Виды сообщений

Выводит сообщения

Отформатировано: Шрифт: 10 пт Отформатировано: Шрифт: 10 пт

Отформатировано: Шрифт: 10 пт

Отформатировано: Шрифт: 10 пт Отформатировано: Шрифт: 10 пт

Отформатировано: Шрифт: 11 пт

Отформатировано: Шрифт: 11 пт Отформатировано: Шрифт: 11 пт Отформатировано: Шрифт: 11 пт

Отформатировано: Шрифт: 11 пт

Отформатировано: Шрифт: 11 пт

Отформатировано: Шрифт: 11 пт

Отформатировано: Шрифт: 11 пт

87

Этап №5. Определение пост- и предусловий выполнения сценария

Таблица 3

Наименование

Свойства

Выполняемые

Условия выполнения

сущности

сущности

сущностью операции

сценария

 

 

 

 

 

 

Операционная

Тип банкомата

1.

Проверяет тип

1.

Банкомат в рабочем режиме.

система

 

 

карты.

2.

Карта находится в приёмни-

банкомата

 

2.

Проверяет код.

 

ке банкомата.

 

 

3. Предоставляет

3.

Тип карты должен

 

 

клиенту интерфейс.

соответствовать типу

 

 

 

 

банкомата.

 

 

 

 

4.

Код должен соответствовать

 

 

 

 

 

учётной записи клиента.

 

 

 

 

5.

Перечень функций

 

 

 

 

ограничен уровнем доступа

 

 

 

 

клиента.

 

 

 

 

Карта клиента

Тип карты в

Нет

Нет

 

виде кода

 

 

 

 

 

 

 

 

Клиент

PIN-код

Ввод данных по-

Нет

 

 

средством

 

 

 

 

клавиатуры

 

 

 

 

 

 

Банк

PIN-код

Хранит учётную

Соединён по каналу связи с

 

 

запись

банкоматом

 

 

 

 

 

Интерфейс

1. Типы

1.Ожидает ввода

1.

Время ожидания ограничено.

 

операций.

 

данных клиента.

2.

Сообщения адекватны

 

2. Виды

2.Выводит

доступным клиенту функциям.

 

сообщений.

сообщения.

3.

Сообщения на русском

 

 

 

 

языке.

 

 

 

 

 

 

Этап №5. Перечень объектов информационной системы

1)операционная система банкомата;

2)карта клиента;

3)клиент;

4)банк;

5)интерфейс.

Примечание: следует подчеркнуть, что именно объектно-ориентированный подход позволяет ассоциировать, расширять, обобщать и включать новые элементы в имеющуюся модель предметной области и одновременно отражать такие изменения в имеющемся программном коде. Такие изменения не будут являться причиной переработки ранее созданных моделей и программного кода, так как эти изменения суть расширение уже имеющегося проекта, но не переделка его заново.

88

ПРИЛОЖЕНИЕ Б Примеры инкапсуляции и создания экземпляров классов

Пример №1

Таблица 1 − Инкапсуляция класса без конструкторов с открытыми данными и функциями

Операторы на языке С++ (мо-

Комментарии

дуль ABCopen.h)

 

 

 

class ABCopen

Объявление прототипа класса АВСopen

 

 

{

Открытие описания прототипа класса

 

 

public:

Описатель уровня доступа к элементам

 

класса АВСopen

 

 

int x,y;

Переменные класса

 

 

putPart();

Интерфейс функции "задать значения

 

переменным класса АВСopen"

 

 

getPart();

Интерфейс функции "выдать значения

 

переменных класса АВСopen"

 

 

};

Закрытие описание прототипа класса

 

 

ABCopen::putPart()

Реализация функции "задать значения

 

переменным класса АВСopen"

 

 

{cout<<"Input the value of

Операторы реализации функции

ABCopen.x:"<<endl;cin>>x;

 

 

 

Cout<<"Input the value of

Операторы реализации функции

ABCopen.y:"<<endl;cin>>y;}

 

 

 

ABCopen::getPart()

Реализация функции "выдать значения

 

переменных класса АВСopen"

 

 

{cout<<"this is value of

Операторы реализации функции

ABCopen.x="<<x<<endl;

 

 

 

Cout<<"this is value of

Операторы реализации функции

ABCopen.y="<<y<<endl;}

 

 

 

89

Пример №2

Таблица 2 − Инкапсуляция и использование класса без конструкторов с закрытыми данными и открытыми функциями

Операторы на языке С++(модуль

Комментарии

ABCclose.h)

 

 

 

class ABCclose

Объявление прототипа класса

 

 

{

Открываем описание класса

 

 

private:

Уровень доступа к элементам класса

 

(закрыт)

 

 

int x,y;

Переменные класса

 

 

public:

Уровень доступа к функциям класса

 

(открыт)

 

 

putPart();

Интерфейс функции "задать значения

 

переменным класса АВСclose"

 

 

getPart();

Интерфейс функции "выдать значения

 

переменных класса АВСclose"

 

 

};

Закрываем описание класса

 

 

ABCclose::putPart()

Реализация функции "задать значения

 

переменным класса АВС"

 

 

{cout<<"Input the value of

Операторы реализации функции

ABCclose.x:"<<endl;cin>>x;

 

 

 

cout<<"Input the value of

Операторы реализации функции

ABCclose.y:"<<endl;cin>>y;}

 

 

 

ABCclose::getPart()

Реализация функции "выдать значения

 

переменных класса АВС"

 

 

{cout<<"this is value of

Операторы реализации функции

ABCclose.x="<<x<<endl;

 

 

 

cout<<"this is value of

Операторы реализации функции

ABCclose.y="<<y<<endl;}

 

 

 

90

Пример №3

Таблица 3 − Инкапсуляция с конструктором и закрытыми данными без функций

Операторы на языке С++ (мо-

Комментарии

дуль ABC.h)

 

 

 

class ABC

Объявление прототипа класса

 

 

{

Открываем описание класса

 

 

Private: int x,y;

Уровень доступа к элементам класса

 

(закрыт)

 

 

Public:

Уровень доступа к функциям класса

 

(открыт)

 

 

ABC();

Метод класса (объявление прототипа

 

конструктора класса ABC)

 

 

};

Закрываем описание класса

 

 

ABC::ABC()

Реализация конструктора вне тела класса

 

посредством оператора расширения

 

видимости «::»

 

 

{cout<<"Input the value of ABC.x"

Реализация конструктора: "выдать

<<endl; cin>>x;

значения переменных класса АВС"

cout<<"Input the value of ABC.y"

 

<<endl; cin>>y;

 

 

 

cout<<"This is value of

Операторы реализации конструктора

ABC.х"<<x<<endl;

 

 

 

cout<<"This is value of

Операторы реализации конструктора

ABC.y"<<y<<endl;}

 

 

 

Пример №4

Таблица 4 − Инкапсуляция класса с конструктором инициализации посредством списка и закрытыми данными

Операторы на языке С++ (модуль ABC1.h)

Комментарии

 

 

class ABC1

 

 

 

{Private: int x,y;

 

 

 

Public: ABC1(int a, int b); };

Метод-конструктор

 

 

ABC1::ABC1(int a,int b):x(a),y(b)

Реализация конструктора

{cout<<"x="<<x<<endl;cout<<"y="<<y

инициализации списком вне

<<endl;}

тела класса

 

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]