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

Проектирование_МПС_лек08

.pdf
Скачиваний:
12
Добавлен:
15.02.2015
Размер:
467.96 Кб
Скачать

1

8 Разбиение на классы и объекты

После определения прецедентов и построения статической модели делается первая попытка выявить программные объекты, участвующие в системе. На данном этапе следует обратить внимание на объекты программы,

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

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

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

8.1 Категории классов приложения

Под категорией понимается специфически определенный раздел в системе классификации. При структурировании объектов указываются их категории группировки объектов со сходными характеристиками.

Категоризация – это системная классификация, то есть решение по объединению классов в определенные группы принимается на основании того,

что в большинстве программных систем такие классы есть.

2

В разных системах могут преобладать классы той или другой категории.

Например, в информационно насыщенных системах явно сущностных классов,

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

Встречаются в них и сложные, зависящие от состояния, управляющие классы,

так как в самой природе этих систем заложена зависимость от состояния.

На рис. 8.1 показаны категории классов приложений. Чтобы различать виды классов, применяются стереотипы. Стереотип – это подкласс существующего элемента модели (в данном случае класса приложения),

который употребляется для обозначения способа использования. Описание стереотипа заключается в кавычки.

Рисунок 8.1 – Категоризация классов приложения с помощью стереотипов Каждый прямоугольник на рис. 8.1 представляет отдельную категорию

классов приложения, между которыми существуют отношения наследования.

Категории стереотипов «интерфейс», «управляющий» и «прикладная логика» классифицируются более детально.

3

8.2 Структурирование категорий объектов

Объекты классифицируются по роли, которую они играют в приложении.

Рассмотрим критерии отнесения объектов к той или иной категории.

А. Интерфейсный или граничный объект. Объект, реализующий интерфейс с внешней средой. Интерфейсные объекты можно подразделить на:

объект интерфейса с устройством ввода/вывода;

объект интерфейса с пользователями;

объект интерфейса с внешней системой.

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

В. Управляющий объект. Координирует работу других объектов,

участвующих в прецеденте. Управляющие объекты подразделяются на:

объекты-координаторы; управляющие объекты, зависящие от состояния;

объекты-таймеры.

Г. Объекты прикладной логики. Объекты прикладной логики содержат детали логики программы. Они необходимы, когда нужно отделить логику обработки от обрабатываемых данных, поскольку есть вероятность, что они будут изменяться независимо друг от друга. В информационных системах объектами прикладной логики обычно являются объекты бизнес-логики, тогда как в приложениях реального времени, научных и инженерных приложениях это, как правило, объекты-алгоритмы.

В большинстве случаев сразу ясно, к какой категории относится объект.

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

которая представляется наиболее подходящей.

4

8.3 Внешние и интерфейсные классы

Внешние классы являются внешними по отношению к системе и взаимодействуют с ней через интерфейсные классы, которые находятся внутри системы.

Внешние классы можно охарактеризовать с помощью стереотипов.

Внешний класс может относиться к категориям «внешний пользователь», «внешнее устройство» или «внешний таймер». Внешний пользователь взаимодействует с системой через стандартные устройства ввода/вывода

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

внешние устройства ввода (например, датчики, клавиатура);

внешние устройства вывода (сигнальные лампы, электропривод);

внешние устройства ввода/вывода.

На рис. 8.2 представлено дерево внешних классов, определенное с помощью стереотипов.

Рисунок 8.2 – Дерево описания внешних классов Идентификация внешних классов, взаимодействующих с системой,

помогает выявить интерфейсные классы внутри системы. Между внешними и интерфейсными классами существует взаимно-однозначное соответствие (при

5

условии, что внешние классы правильно идентифицированы). Внешние классы взаимодействуют с интерфейсными классами следующим образом:

А. Класс внешней системы взаимодействует с классом интерфейса системы. В этом случае класс внешней системы эквивалентен актеру – внешней системе.

Б. Класс внешнего устройства взаимодействует с классом интерфейса устройства.

В. Класс внешнего пользователя взаимодействует с классом интерфейса пользователя.

Г. Класс внешнего таймера взаимодействует с внутренним классом таймера.

8.4 Интерфейсные объекты

Объекты интерфейса устройства. Объекты интерфейса устройства представляют собой программный интерфейс с аппаратным устройством ввода/вывода.

Физический объект, иногда называемый конкретным, – это объект предметной области, имеющий аналог в реальном мире и обладающий некоторыми физическими характеристиками; к примеру, его можно увидеть или потрогать. Например, в системе управления лифтами кнопка этажа и индикатор прибытия на этаж – это объекты реального мира, обладающие датчиками, которые передают данные в систему. Мотор и дверь – объекты,

управляемые приводами, которые получают информацию из системы.

На рис. 8.3 приведен пример объекта интерфейса устройства ввода на диаграмме кооперации. Объект интерфейса устройства ввода «Интерфейс датчика Температуры» получает информацию о температуре от объекта,

представляющего физическое устройство ввода «Датчик Температуры». На рисунке показана также граница между программным и аппаратным обеспечением и стереотипы для аппаратного объекта «внешнее устройство ввода» и программного объекта «интерфейс устройства ввода».

6

Рисунок 8.3 – Пример объекта «Интерфейс Устройства Ввода» На рис. 8.4 представлен объект интерфейса устройства вывода

«Интерфейс Красной Лампочки», который передает информацию внешнему объекту реального мира «Привод Красной Лампочки». Программный объект

«Интерфейс Красной Лампочки» получает запросы «Включить» и «Выключить», которые он передает в виде команды устройству «Привод Красной Лампочки».

Рисунок 8.4 – Пример объекта «Интерфейс Устройства Вывода»

7

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

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

Объекты интерфейса пользователя. Объекты интерфейса пользователя описывают интерфейс с человеком на основе таких стандартных устройств – клавиатуры, дисплея, мыши.

В зависимости от применяемой технологии интерфейс пользователя бывает очень простым (в виде командной строки) или очень сложным

(графический интерфейс пользователя). Объект интерфейса пользователя может быть составным и включать несколько более простых объектов. Для таких объектов предусмотрен стереотип «интерфейс пользователя».

Примером простого объекта интерфейса пользователя является

«Интерфейс Оператора» (рис. 8.5), который принимает команды оператора,

запрашивает показания датчиков от сущностного объекта «Хранилище Показаний Датчика» и отображает полученные данные на дисплее.

Рисунок 8.5 – Пример объекта интерфейса пользователя

8

Возможны и более сложные объекты интерфейса пользователя.

Например, объект «Интерфейс Оператора» способен включать несколько более простых объектов. В таком случае оператор увидит в одном окне динамически обновляемое состояние рабочей станции, в другом – состояние тревожных датчиков, а в третьем будет вводить команды для системы.

Объекты интерфейса системы. Объект интерфейса системы осуществляет взаимодействие с внешней системой, которая должна общаться с разрабатываемой системой, и скрывает детали такого взаимодействия.

Пример объекта интерфейса системы – это объект «Интерфейс Подъемно-Транспортного Робота» в системе автоматизации производства

(рис. 8.6), который осуществляет интерфейс с объектом «Подъемно-

Транспортный Робот».

Рисунок 8.6 – Пример объекта интерфейса системы Объект «Интерфейс Подъемно-Транспортного Робота» получает запросы

«Поднять» и «Переместить», которые посылает в виде команды внешнему объекту «Подъемно-Транспортный Робот». Робот реагирует на команды, а

объект интерфейса системы транслирует реакцию источнику запросов.

Изображение внешних и интерфейсных классов. В лекции 7

говорилось о том, как разработать диаграмму классов контекста системы, на которой представлены все внешние классы системы, взаимодействующие с системой. Полезно уточнить эту диаграмму, показав интерфейсные и внешние

9

классы. Система показана в виде пакета, внутри которого изображены интерфейсные классы (рис. 8.7).

Рисунок 8.7 – Внешние и интерфейсные классы в банковской системе На диаграмме классов контекста банковской системы видно, что каждый

внешний класс ассоциирован с каким-то интерфейсным классом. Система изображается в виде пакета. В этом приложении есть три класса интерфейса устройств и два класса интерфейса пользователя. Классы интерфейсов устройств – это «Интерфейс Устройства Чтения Карточек», «Интерфейс Устройства Выдачи Наличных» и «Интерфейс Устройства Печати Чеков». «Интерфейс Клиента» и «Интерфейс Оператора» – это классы интерфейса пользователя.