Лекция 07-1 (структуризация классов).

advertisement
Технологии разработки
программного обеспечения
Лекция 9.
Структуризация классов
программной системы
Типы программных систем
1. системы работающие только с людьми
– например: информационные системы организаций –
используются людьми для ввода, хранения поиска и
отображения информации;
2. системы работающие с людьми и внешними
техническими устройствами:
– например: информационные системы соревнований.
3. системы работающие с внешними техническими
устройствами
– встроенные системы реального времени –
встраиваются в технические устройства для
выполнения управления ими.
Типы внешних технических
устройств
• Технических устройства ввода информации
–
–
–
–
клавиатура (стандартное устройство);
датчики;
устройство чтения банковских карт
…
• Технических устройства вывода информации
–
–
–
–
дисплей (стандартное устройство);
принтер;
электропривод (исполнительное устройство);
…
• Технических устройства ввода/вывода информации
– сенсорный экран дисплея;
–…
Типы программных классов
• Выделяют следующие типы программных классов :
• Связи между классами показывают отношение
наследования.
Типы классов приложения
• Выделяют следующие типы программных классов :
• Связи между классами показывают отношение
наследования.
1. Сущностные объекты
• Сущностной объект (entity object) это
программный объект, который содержит
информацию и предоставляет доступ к
хранилищу, которое хранит данную
информацию.
– во многих случая является устойчивым
(persistent).
• В некоторых случаях доступ к сущностному
объекту можно получить через сервисный
объект.
2. Интерфейсный (граничный) объект
•
•
Граничный объект (boundary object) это программный
объект, который взаимодействует и обменивается
информацией с внешней средой (контекстом).
Граничные объекты далее делятся на следующие
подтипы:
1. объект взаимодействия с пользователем (user
interaction object) - программный объект,
взаимодействующий и предоставляющий интерфейс для
пользователя – человека;
2. объект – заместитель (Proxy object) - программный
объект, который взаимодействует и обменивается
информацией с внешней системой или подсистемой;
3. объект взаимодействующий с устройством
ввода/вывода (device I/O boundary object).
3. Управляющий объект
• Управляющий объект (control object) это
программный объект, выполняющий
координацию работы набора объектов.
• Управляющие объекты делятся на
следующие подтипы:
1. координирующие объекты;
2. управляющие объекты, зависящие от состояния;
3. таймерные объекты, формирующие сообщения по
заданному временному.
4. Объект прикладной логики
•
•
Объект прикладной логики (application logic object)
это программный объект, содержащий подробности
прикладной логики.
Требуется, когда желательно скрыть прикладную
логики отдельно от данных, которые она использует,
–
•
•
Например, чтобы прикладной логикой можно было
обмениваться независимо от данных.
В информационных системах, объекты прикладной
логики обычно являются объектами бизнес-логики.
А в СРВ, научных и инженерных приложениях,
объекты прикладной логики обычно являются
алгоритмическими объектами.
• Для задания типа конкретного класса на UML
диаграммах используются стереотипы.
• Такое разделение по типам применяется
одинаково и к классам и к объектам.
Последовательность выполнения
анализ системы
1. Построение концептуальной статической
модели системы:
– выявляются внешние и интерфейсные классы;
– выявляются сущностные классы;
2. Структуризация программных классов
статической модели.
– выявляются другие программные классы
3. Построение динамической модели системы
на основе реализации вариантов
использования.
Концептуальное статическое
моделирование системы
• Концептуальная статическая модель
создается на раннем этапе анализа.
• Концептуальная модель
– применяется для моделирования ПрО и
– помогает понять проблемы ПрО.
• Разработка концептуальной статической
модели включает:
1. выделению контекста системы – внешних и
интерфейсных классов;
2. выделению сущностных классов.
Пример концептуальной статической
модели
• Концептуальная
статическая модели
банковской системы.
• Банк предоставляет
сервисы (услуги) для
нескольких Банкоматов
(ATM).
• Каждый ATM является
композитным классом,
который включает
составные части
1. Моделирование контекста
системы
Моделирование контекста системы
• Важно понять пределы компьютерной системы,
– что должно быть включено в саму систему,
– что должно остаться вне системы.
• Моделирование контекста явно задает, что
находится внутри системы, а что находится вне
системы.
• Моделирование контекста может быть сделано
– на уровне всей системы (технического и
программного обеспечения) или
– на уровне программной системы (только ПО).
• В диаграмме классов контекста (ДКК) системы
задает явную границу между
– системой (технической и программной),
рассматриваемой в виде черного ящика, и
– внешней средой (которая теперь включает ТО)
• Такое задание границ вокруг системы является
более детальным, чем то, что обычно
показывается в диаграммах вариантов
использования.
• При разработке ДКК полезно рассматривать
– контекст всей технич. и прогр. системы перед
тем, как рассматривать
– контекст только прогр. системы.
• Это особенно, если требуется сделать
компромисс между технич. и прогр.
обеспечением.
• При рассмотрении общего технич. и прогр.
контекста, вне системы находятся только
– пользователи (т.е. люди - актеры) и
– внешние системы.
Пример технич. и прогр. системы
• На контекстной ДК технич. и прогр. обеспечения
банковской системы показываются ее взаимодействие
с актерами:
– ATM Клиентами и
– ATM Операторами
• Все другие элементы включаются (как часть) в общую
технич. и прогр. систему.
Пример контекстной диаграммы классов
Банковской Системы
• Моделирование контекста системы состоит
в следующем:
1. определение внешних сущностей,
взаимодействующих с сиcтемой (внешние
классы);
2. определение классов, которые будут
взаимодействовать с этими внешними
сущностями (интерфейсные классы).
1. Моделирование внешних классов
Контекст системы
• Разрабатываемая программная система должна
взаимодействовать с окружающей ее средой.
• Такое взаимодействие ПС со средой выполняется
посредством внешних объектов (внешних классов),
которые составляют контекст системы.
• К внешним объектам относятся:
– люди (пользователи, клиенты, операторы и т.п.);
– датчики (измеряют и передают в систему разные
характеристики окружающей среды);
– исполнительные устройства (выполняют действия по
команде системы – электроприводы, двигатели, и т.п.);
– внешние программные системы с которыми должна
взаимодействовать разрабатываемая система.
Моделирование контекста
• С помощью UML создается контекстная диаграмма
классов (КДК) для статической модели
показывается:
– контекст системы техн/прогр системы – показывается в
виде агрегированного класса со стереотипом «system»,
– внешняя среда - изображается в виде внешних
классов, для которых данная система должна
взаимодействовать.
Внешние классы
• Все внешние объекты концептуально
описываются в виде внешних классов, которые
показываются на контекстной ДК, но не входят в
ПС.
• Выделяются следующие внешние классы:
1. «внешний человек-пользователь»
2. «внешнее устройство»,
• «внешнее устройство ввода»,
• «внешнее устройство вывода»,
• «внешнее устройство ввода/вывода»,
3. «внешняя система» или
4. «внешний таймер».
Стереотипы для задания типа
внешних классов
• Внешние классы классифицируются с помощью UML
стереотипов.
• На схеме показаны типы внешних классов.
• Каждый прямоугольник представляет разные типы
внешних классов, а связи между ними отношения
наследования.
Пример стереотипов для
внешних классов
• Стереотипы для классификации внешних
классов системы:
– «external user» («внешний пользователь»),
– «external system» («внешняя система»),
– «external timer» («внешний таймер»).
• Классы внешних устройств далее
классифицируются следующим образом:
1. внешние классы устройств ввода (например:
датчики);
2. внешние классы устройств вывода (например,
исполнительные механизмы (приводы, actuator));
3. внешние классы устройств ввода/вывода (ATM card
reader).
Пример диаграммы классов контекста
• Контекстная диаграмма классов для Банковской
Системы.
Пример диаграммы классов контекста (2)
• Диаграмма классов контекста Банковской Системы
со стереотипами
Моделирование человекапользователя системой
• Человек-пользователь часто взаимодействует с ПС с
помощью стандартных устройств ввода/вывода, таких,
как клавиатура/дисплей и «мышь».
– Характеристики таких стандартных устройств не являются
важными, т.к. они управляются ОС.
• Более важным является интерфейс с пользователем в
терминах
– информации, которая выводится для пользователя и
– информации, которая вводится пользователем.
• Поэтому внешний пользователь, взаимодействующий с
системой при помощи стандартных устройств,
моделируется как «внешний пользователь», а не как
устройство.
Рекомендация
• Если пользователь-человек взаимодействует с
системой с помощью стандартных устройств
ввода/вывода, то только тогда он показываться в
виде внешнего класса пользователей
• Если пользователь взаимодействует с ПС с помощью
специфичных для приложения устройств
ввода/вывода, то эти устройства должны
показываться в виде внешних классов устройств
ввода/вывода.
• Для встроенных систем реального времени
желательно выявлять низкоуровневые
внешние классы, которые соответствуют
физическим устройств ввода/вывода, для
которых ПС должна выполнять
взаимодействие.
• Такие внешние классы показываются с
помощью стереотипа «внешнее устройство
ввода/вывода» («external I/O device»).
• Примерами таких внешних устройств I/O в
«Автоматизированной Системе Управления
Транспортными средствами» являются:
– внешнее устройство ввода - «Датчика прибытия»
(Arrival Sensor);
– внешнее устройство вывода - «Двигатель» (Motor).
Класс «внешняя система»
• Класс «внешняя система» («external system»)
требуется, в том случае, если
разрабатываемая система взаимодействует с
другими системами (посылает или получает от
них данные).
– Например, в «Автоматизированной Системе
Управления ТC») система взаимодействует с двумя
внешними системами:
1. Управляющая система
2. Показывающая система
Класс «внешний таймер»
• Класс «внешний таймер» («external timer»)
показывается в контекстной ДК,
– если требуется отслеживать время;
– и/или если требуется внешний таймер для запуска
(инициирования) внешних действий в данной
системе.
• Классы «внешний таймер» («external timer»
classes) наиболее часто требуются в системах
реального времени (СРВ).
– Пример: в «Автоматизированной Системе Управления
ТС» моделируются «Часы» (Clock).
– Они требуются, т.к. ПС требуются события от внешнего
таймера, чтобы инициировать различные
периодически повторяющиеся действия.
Связи внешних классов с системой
• Ассоциации между внешними классами и
агрегированным классом ПС и показывается на
контекстной диаграммы классов.
• Также показывается имя и кратность (multiplicity)
таких ассоциаций.
• Стандартными именами таких ассоциаций в
контекстной ДК ПС являются
1. «Вводить_в» (Inputs to);
2. «Выводить_в» (Outputs to);
3. «Общаться_с» (Communicates with);
4. «Взаимодействовать_с» (Interacts with);
5. «Отправлять_сигналы» (Signals).
Примеры использования
ассоциаций
• «внешнее устройство ввода» Вводит-в
«система»
• «система» Выводит-на «внешнее устройство
вывода»
• «внешний пользователь» Взаимодействует_с
«система»
• «внешняя система» Соединена-с «системой»
• «внешний таймер» Пробуждает «систему»
Пример диаграммы классов контекста
• Диаграмма классов контекста Банковской ПС.
Пример автоматизированной системе
управления транспортом
• «Автоматизированной Системе Управления Транспортными
средствами» с стереотипами внешних классов.
Выявление интерфейсных
(граничных) классов
Интерфейсные классы
• Внешние классы это классы, описывающие
сущности, которые находятся вне системы и
взаимодействуют с ней.
• Интерфейсные (граничные) классы это
классы, находящиеся внутри системы,
которые взаимодействуют и обмениваются
данными с внешними классами.
• Для определения интерфейсных классов
программной системе, необходимо
рассмотреть внешние классы, с которыми они
связаны.
Выявление интерфейсных классов
• Выявление внешних классов,
взаимодействующих с системой, помогает
выявить некоторые из классов внутри
системы, а именно интерфейсные классы.
• Каждый внешний класс взаимодействует с
некоторым интерфейсным классом.
• Между внешними и соответствующими им
интерфейсными классами существует
взаимно-однозначное соответствие (при
условии, что внешние классы правильно
выявлены).
Типы интерфейсных классов
1. Классы интерфейсов пользователя.
2. Классы прокси-объектов.
3. Классы интерфейсов устройств.
Изображение внешних и
интерфейсных классов
• Ранее рассматривалось, как провести границу системы и
разработать диаграмму классов контекста системы, на которой
представлены все внешние классы, взаимодействующие с
системой.
• Полезно уточнить эту диаграмму, показав интерфейсные и.
внешние классы.
• Интерфейсные классы расположены внутри системы - точнее, на
границе между системой и внешней средой.
• Система показана в виде пакета, внутри которого изображены
интерфейсные классы, являющиеся частью системы.
• Каждый внешний класс взаимно-однозначно связан с каким-либо
интерфейсным.
• Таким образом, начав с внешних классов, изображенных на
рассматриваемой диаграмме, задача уточняется до выявления
интерфейсных классов.
Пример показа внешних и
интерфейсных классов
• Внешние и интерфейсные классы в банковской системе
1. Объекты интерфейса пользователя
• Объект интерфейса пользователя описывает
интерфейс с человеком на основе таких
стандартных устройств, как клавиатура, дисплей
и мышь.
• Стандартные устройства ввода/вывода обычно
управляются операционной системой, так что в
приложение не нужно включать специальные
объекты для интерфейса с ними.
• В зависимости от применяемой технологии
интерфейс пользователя бывает
– очень простым (в виде командной строки) или
– очень сложным (графический интерфейс пользователя
- GUI).
Пример класса и объекта
взаимодействия с пользователем
• Пример представления простого класса,
выполняющего взаимодействие с
пользователем, который называется «Operator
Interaction»:
Объекты интерфейса пользователя
• Примером простого объекта интерфейса
пользователя является «Интерфейс Оператора»,
который
– принимает команды оператора,
– запрашивает показания датчика от сущностного
объекта «Хранилище Показаний Датчика» и
– отображает полученные данные на дисплее.
• Объект интерфейса пользователя может быть
составным и включать несколько более
простых объектов.
• Это значит, что актеры взаимодействуют с
системой при помощи нескольких объектов
интерфейса пользователя, последовательно
или параллельно.
• Для таких объектов предусмотрен стереотип
«интерфейс пользователя» («user
interaction»).
2. Прокси объекты
• Объект-заместитель (прокси объект)
взаимодействует и обменивается данными с
внешней системой.
• Прокси объект является представителем
внешней системы и скрывает детали того,
«как» выполняется взаимодействие с внешней
системой.
• Например: прокси класс для робота «Захвати и
положи» (Pick & Place Robot).
• Каждый прокси объект скрывает детали того, как
он взаимодействует и обменивается данными с
конкретной внешней системой.
• Наиболее вероятно, что прокси объект
обменивается данными, с помощью сообщений,
с внешней, управляемой компьютером системой
(такой, как робот в рассмотренном примере), а
не с датчиками и исполнительными
устройствами, как это делают граничные объекты
устройств ввода/вывода.
• Однако, такие задачи рассматриваются уже на
этапе проектирования.
3. Объекты интерфейса устройства
• Объект интерфейса устройства представляет
собой программный интерфейс с аппаратным
устройством ввода/вывода.
• Для нестандартных устройств требуются
объекты интерфейса устройства, относящиеся
к уровню приложения.
• Чаще они встречаются в системах реального
времени, хотя бывают необходимыми и в
других системах.
• Физический объект в ПрО приложения
является объектом реального мира, который
имеет физические характеристики.
– Например, его может видеть и к нему можно
прикоснуться.
• Для каждого физического объекта реального
мира, который релевантен решаемой
проблеме, должен быть соответствующий ему
программный объект в системе.
• Реальные физические объекты обычно
взаимодействуют с системой при помощи датчиков и
приводов.
• Такие объекты либо передают информацию в систему
посредством датчиков, либо получают от нее
управляющие воздействия на приводы.
• С точки зрения программной системы объекты
реального мира — это, по сути дела, устройства
ввода/вывода, поставляющие в систему входную
информацию и получающие от нее выходную.
• Поскольку объекты реального мира соответствуют
устройствам ввода/вывода, то осуществляющие
интерфейс с ними программные объекты называются
объектами интерфейса устройств.
• Например, в системе управления лифтами
кнопка этажа и индикатор прибытия на этаж это объекты реального мира, обладающие
датчиками (устройства ввода), которые
передают данные в систему.
• Мотор и дверь - объекты, управляемые
приводами (устройства вывода), которые
получают информацию из системы.
• На рис. приведен пример объекта интерфейса устройства
ввода на диаграмме коммуникации.
• Объект интерфейса устройства ввода — Интерфейс Датчика
Температуры - получает информацию о температуре от
объекта, представляющего физическое устройство ввода, Датчика Температуры.
• Здесь также показана граница между программным и
аппаратным обеспечением и стереотипы для аппаратного
объекта «внешнее устройство ввода» и программного
объекта «интерфейс устройства ввода».
• Таким образом, объект интерфейса устройства
описывает программный интерфейс с внешним
аппаратным устройством.
• На рисунке представлена логическая модель
задачи, в которой входные данные посылаются
аппаратным устройством ввода программному
объекту интерфейса устройства.
• Во время проектирования принимается решение,
должно устройство быть активным (само
посылать программному объекту входные
данные) или пассивным, (программный объект
должен его опрашивать).
Объекты интерфейса системы
• Объект интерфейса системы осуществляет взаимодействие с внешней
системой, которая должна общаться с разрабатываемой системой, и
скрывает детали такого взаимодействия.
• Пример объекта интерфейса системы — это объект Интерфейс ПодъемноТранспортного Робота в системе автоматизации производства, который
осуществляет интерфейс с Подъемно-Транспортным Роботом.
• Объект «Интерфейс Подъемно-Транспортного Робота» получает запросы
Поднять и Переместить, которые посылает в виде команд внешнему
объекту Подъемно-Транспортный Робот.
• Робот реагирует на команды, а объект интерфейса системы транслирует
реакцию источнику запросов.
Моделирование сущностных
классов
Сущностные классы
• Сущностные классы (классы-сущности, entity
classes) это концептуальные классы, активно
использующие данные.
– их основная цель состоит в хранении данных и
предоставлении доступа этим данным.
• Во многих случаях, классы сущностей
являются постоянными (persistent)
– эти данные являются долгоживущими и должны
храниться файлах или БД.
Выявление сущностных классов
• Сущностные классы выявляются с помощью
ранее рассмотренных методов:
– грамматический анализ «существительное
глагол»;
– CRC анализ;
– объектный блиц.
Пример концептуальной статической
модели : сущностные классы
• Концептуальная статическая модель банковской
системы: сущностные классы
Пример моделирования сущностных
классов
• Пример моделирования сущностных классов – система онлайн торговли.
• В описании проблемы упоминаются:
– клиенты (customers),
– счета (accounts) и
– каталоги (accounts) .
• Сущностные классы особенно активно
используются в информационных системах.
• Однако и многие системы реального времени
и встроенные системы также активно
используют такие классы, интенсивно
работающие с данными.
• Сосредоточение на моделировании
сущностных классов аналогично
моделированию логических схем БД.
• Сущностные классы часто на этапе
проектирования отображаются на БД.
Моделирование атрибутов классов
• Важной задачей моделирования классов
сущностей является определение атрибутов
каждого класса сущностей.
• Т.к. класс сущностей активно использует данные,
то он должен имеет несколько атрибутов.
• Если кажется, что класс сущностей имеет только
один атрибут, то тогда возникает вопрос, является
ли данный класс действительно классом
сущностей.
• Есть вероятность, что данная сомнительная
сущность должна моделироваться с помощью
атрибута какого-то класса
Пример атрибутов классов сущностей
системы он-лайн торговли
Пример сущностного класса и
объекта
• Для указания сущностного класса, используется стереотип
«сущность».
• Экземпляры класса Счет - сущностные объекты, которые
также снабжены стереотипом «сущность».
– Атрибутами класса Счет являются номер Счета и баланс.
• Объект Счет - это устойчивый (долго живущий) объект,
который участвует в нескольких прецедентах, в том числе
инициированных клиентом (снятие денег, получение
справки и перевод денег посредством банкомата) или
кассиром (открытие и закрытие счета, кредитование и
дебетование).
Пример сущностного класса и
объекта
• На рис. показан фрагмент диаграммы коммуникации,
объект «Счет» получает сообщения «Открыть»,
«Закрыть», «Кредитовать», «Дебетовать» и
«Прочитать» и отвечает на них, предоставляя
информацию о «Балансе» и «Состоянии».
• «Счет» также используется в варианте использования
ежемесячной подготовки и печати выписок из счета
для клиентов.
Примером сущностного класса (2)
• Примером сущностного класса в приложении, которое занимается
мониторингом датчика реального времени, может служить класс
«Показания Датчика» (рис. 9.10), где хранится информация об аналоговых
датчиках.
• Его атрибуты - имя Датчика, значение Датчика, верхний Предел, нижний
Предел и состояние Тревоги.
• Экземпляром этого класса может быть объект показания Датчика
Температуры, который получает сообщения Прочитать и Обновить и
отвечает, возвращая Текущие Показания Датчика.
• Как показано на рисунке, объект, нуждающийся в получении последних
показаний датчика, посылает сообщение Прочитать.
• Объект, который считал показания реального датчика и хочет обновить
объект показания Датчика Температуры, посылает сообщение Обновить.
Второй этап анализа:
«Структуризация классов
программной системы»
Типы программных классов
• Выделяют следующие типы программных классов :
• Связи между классами показывают отношение
наследования.
Типы классов приложения
• Выделяют следующие типы программных классов :
• Связи между классами показывают отношение
наследования.
Задачи данного этапа
• Для объектов и классов ПС определяются
типы, к которым они относятся.
• Особенное внимание делается
дополнительным программным объектам и
классам, которые не были определены в ходе
концептуального статистического
моделирования проблемной ПрО.
1. Управляющим объекты;
2. Объекты прикладной логики.
• Для каждой типа объектов имеется некоторый
шаблон их поведения объектов, который
описывает, как они взаимодействуют со своими
соседними объектами.
• Полезно понять типичный шаблон поведения
объектов,
– когда некоторая категория объектов используется в
приложении, то очень вероятно, что ее объекты
взаимодействует с соседними объектами одинаковых
типов аналогичным способом.
• Каждый поведенческий шаблон изображается на
UML диаграмме коммуникаций.
Отнесение объектов к типам
• В большинстве случаев, отнесение объекта к
определенному типу, является очевидным.
• Однако, в некоторых случаях, может оказаться, что объект
удовлетворяет более чем одному описанному ранее
критерию.
• Например: объект может иметь
– характеристики сущностного объекта, тем что он инкапсулирует
некоторые данные и
– характеристики алгоритмического объекта, тем что он
выполняет некоторый существенный алгоритм..
• В этом случае данный объект следует отнести к тому типу,
которая кажется более подходящей.
• Более важно определить все объекты в системе, чем
чрезмерно беспокоиться о том, к какому точно типу их
отнести в не понятных случаях.
1. Управляющие классы и объекты
• Управляющие объекты (control object) это
программные объекты, выполняющие
координацию работы для наборов объектов.
• Управляющие объекты делятся на:
1. координирующие объекты;
2. управляющие объекты, зависящие от
состояния;
3. таймерные объекты, связанные с отправкой
сообщений в заданные моменты времени.
Управляющие объекты (2)
• Управляющий объект обеспечивает общую
координацию исполнения варианта
использования.
• Для простых ВИ управляющие объекты не нужны,
но для более сложных могут понадобиться.
• Управляющий объект похож на дирижера
оркестра, который распоряжается поведением
других объектов, участвующих в ВИ, говоря
каждому из них, что и когда он должен делать.
• В зависимости от особенностей ВИ управляющий
объект может зависеть или не зависеть от
состояния.
1. Объекты-координаторы
• Объект-координатор задает весь порядок работы
набора взаимосвязанных объектов на основе
поступающих входных данных, вне зависимости
от состояния.
• Он устанавливает, когда и в какой
последовательности будут действовать другие
объекты, участвующие в прецеденте.
• Координатор принимаем решение только на
основе поступающих входных данных и не
зависят от состояния.
• Иными словами, действие, инициированное
координатором, определяется исключительно
информацией во входном
Пример объекта-координатора
• Пример объекта-координатора и объектов бизнеслогики.
• В банковской системе такими объектами являются
–
–
–
–
Менеджер Транзакций Снятия,
Менеджер Транзакций Перевода,
Менеджер Транзакций Получения Справки и
Менеджер Транзакций Проверки ПИН-кода.
2. Управляющие объекты, зависящие от
состояния
• Поведение управляющего объекта, зависящего от
состояния, различно в каждом из возможных состояний.
• Для определения такого объекта применяется конечный
автомат, и графически он изображается на диаграмме
состояний.
• Существует два вида диаграммы состояний
– плоские и
– иерархические.
• Управляющий объект, зависящий от состояния, получает
входные события, которые вызывают переходы между
состояниями, и генерирует выходные события,
управляющие работой других объектов.
• Выходное событие зависит не только от входного, но и от
текущего состояния объекта.
Пример управляющего объекта,
зависящего от состояния
• Примером управляющего объекта, зависящего от
состояния, служит объект «Управление Банкоматом»,
определяемый с помощью диаграммы состояний.
• Из рисунка видно, что этот объект управляет двумя
объектами интерфейса устройства –
– Интерфейсом Устройства Печати Чеков и
– Интерфейсом Устройства Выдачи Наличных.
• В системах реального времени обычно есть
один или несколько управляющих объектов,
зависящих от состояния.
• Может существовать даже несколько
объектов одного типа.
• Каждый объект исполняет экземпляр одного и
того же конечного автомата (изображаемого в
виде диаграммы состояний), хотя в каждый
момент времени эти объекты, скорее всего,
оказываются в разных состояниях.
• В банковской системе примерами такого рода
являются банкоматы, имеющие собственный
зависящий от состояния управляющий объект
«Управление Банкоматом», который исполняет
свой экземпляр диаграммы состояний.
• Другой пример - система управления лифтами,
моделируемой с помощью управляющего
объекта «Управление Лифтом» посредством
диаграммы состояний.
• Очевидно, что у любого лифта есть свой объект
«Управление Лифтом».
3. Объекты-таймеры
• Объект-таймер - это управляющий объект, активизируемый
внешним таймером, например тактовым генератором или часами
операционной системы.
• Объект-таймер либо сам осуществляет некоторое действие, либо
активизирует другой объект, который выполнит нужное действие.
• Объект «Таймер Пути» активизируется событием, которое
генерирует внешний таймер «Тактовый Генератор».
• Объект-таймер посылает сообщение «Вычислить объекту Путь»,
который вычисляет общее пройденное автомобилем расстояние.
2. Классы и объекты прикладной логики
• Обычно выделяют 3 типа объектов
прикладной
1. Объекты бизнес-логики
2. Алгоритмические объекты
3. Сервисные объекты.
• Как и управляющие объекты, объекты
прикладной логики наиболее вероятно будут
рассматриваться, когда будет разрабатываться
в динамическая модель, а не начальная
концептуальная модель.
1. Объекты бизнес-логики
• Объекты бизнес-логики определяют логику
обработки приложением запросов клиентов.
• Их назначение заключается в инкапсуляции
бизнес-правил, которые могут изменяться
независимо друг от друга.
• Обычно во время выполнения объекты
бизнес-логики обращаются к сущностным
объектам.
• Объекты бизнес-логики нужны только в
некоторых ситуациях.
• Иногда бизнес-логику разумно инкапсулировать в
отдельный объект, а иногда она настолько
проста, что ее можно реализовать в виде
операции сущностного объекта.
• Общая рекомендация такова:
– если для выполнения бизнес-правила приходится
обращаться к двум или более сущностным объектам,
вводите отдельный объект бизнес-логики;
– если же для выполнения правила достаточно одного
сущностного объекта, предоставьте это операции
самого объекта.
Пример объекта бизнес-логики
• На диаграмме показан пример объекта бизнес-логики – «Менеджер
Транзакций Снятия денег».
• Он обслуживает запросы клиентов на снятие денег.
• Например:
– первое бизнес-правило может состоять в том, что после снятия на счету
клиента должно остаться не менее 100 рублей.
– Второе правило гласит, что по дебетовой карточке клиент не имеет нрава
снимать более 30000 рублей в день.
• Менеджер Транзакций Снятия обращается к объекту Счет, чтобы
удостовериться в выполнении условий первого правила.
• Для проверки второго правила он запрашивает объект Дебетовая
Карточка, который хранит накопительный итог сумм, снятых клиентом
банкомата в течение дня.
Пример объекта бизнес-логики
• На диаграмме показан пример объекта бизнес-логики – «Менеджер
Транзакций Снятия денег».
• Он обслуживает запросы клиентов на снятие денег.
• Например:
– первое бизнес-правило может состоять в том, что после снятия на счету
клиента должно остаться не менее 100 рублей.
– Второе правило гласит, что по дебетовой карточке клиент не имеет нрава
снимать более 30000 рублей в день.
• Менеджер Транзакций Снятия обращается к объекту Счет, чтобы
удостовериться в выполнении условий первого правила.
• Для проверки второго правила он запрашивает объект Дебетовая
Карточка, который хранит накопительный итог сумм, снятых клиентом
банкомата в течение дня.
• Если хотя бы одно правило не выполняется, запрос на снятие денег
отклоняется.
• Для выполнения бизнес-правил объект бизнес-логики обычно
должен взаимодействовать с сущностными объектами.
• В этом отношении он напоминает объект-координатор.
• Однако, если в обязанности координатора входит управление
работой других объектов, объект бизнес-логики отвечает, прежде
всего, за выполнение бизнес-правил.
2. Алгоритмические объекты
• Объект-алгоритм инкапсулирует алгоритм, применяемый в
данной предметной области.
• Такие объекты чаще всего встречаются
– в приложениях реального времени,
– а также научных и инженерных задачах в тех случаях,
когда в предметной области имеется нетривиальный
алгоритм, который может изменяться независимо от
других ее аспектов.
• Простые алгоритмы обычно реализуются как операции
сущностного объекта, работающие с хранящимися в нем
данными.
• Во многих научных и инженерных приложениях алгоритмы
уточняются итеративно, поскольку их совершенствование,
например с точки зрения производительности и точности
вычислений, не зависит от данных.
• В системе круиз-контроля объект-алгоритм Крейсер
вычисляет, как надо изменить тягу путем сравнения
текущей скорости автомобиля с требуемой
крейсерской скоростью.
• Алгоритм достаточно сложен, поскольку требуется
плавно разгонять или притормаживать автомобиль,
чтобы пассажиры не испытывали неудобств.
• Объект-алгоритм часто инкапсулирует данные,
необходимые для выполнения алгоритма.
• Это могут быть начальная информация,
промежуточные результаты или пороговые
данные, например максимальные и
минимальные значения.
• Объект-алгоритм обычно взаимодействует с
другими объектами. В этом отношении он
напоминает объект-координатор.
• Но в отличие от координатора, который должен
управлять другими объектами, назначение
объекта-алгоритма состоит, прежде всего, в
инкапсуляции и выполнении алгоритма.
3. Сервисные объекты
• Сервисный объект это объект, который предоставляет
услуги (сервис) для других объектов.
• Обычно они используются в сервис-ориентированных
архитектурах и приложениях.
• Клиентский объект может сделать запрос на услугу от
сервисного объекта, на который сервисный объект будет
отвечать.
• Сервисный объект сам никогда не инициирует запрос,
однако, в ответ на запрос в услуге он может искать помощи
у других сервисных объектов.
• Сервисные объекты играют важную роль в сервисориентированных архитектурах (SOA), хотя они также
используются и в других архитектурах, таких, как
клиент/серверная архитектуры и основанных на
компонентах архитектурах ПО.
• Сервисный объект может инкапсулировать данные,
которые должны для обработки запроса клиента
сервиса или для доступа к другому сущностному
объекту (или объектам), которые содержат эти данные.
• Примером сервисного класса является «Сервис
Каталога» (Catalog Service):
• На рис. показан пример выполнения экземпляра класса «Catalog
Service».
• Объект класса «Catalog Service» предоставляет поддержку для
просмотра различных элементов из каталога поставщика и для их
выбора.
• Координатор «Customer Coordinator» помогает объекту класса
«Customer Interaction» найти каталог поставщика, путем
предоставления объекта «Catalog Service» и выполнения выборки
из данного каталога.
Download