Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции - Часть 9.doc
Скачиваний:
35
Добавлен:
02.05.2014
Размер:
5.57 Mб
Скачать

9.4. Классы интерфейса устройства

Одной из важных целей при разработке программной системы является со­крытие от пользователей информации о модификациях реальных устройств ввода/вывода. Типичный пример такого изменения – это замена одного устрой­ства другим с той же функциональностью, но иным аппаратным интерфейсом. Ра­зумеется, крайне нежелательно, чтобы подобное изменение затронуло всех пользо­вателей. Решается проблема посредством классов интерфейса устройства, которые предоставляют виртуальный интерфейс, скрывающий детали общения с реаль­ным устройством.

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

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

Объекты интерфейса устройств определяются на этапе аналитического моде­лирования путем применения критериев разбиения на объекты. Такие программные объекты взаимодействуют с физическими устройствами, внешними по отношению к системе. На этапе проектирования классов разрабаты­ваются все классы интерфейса устройств.

9.4.1. Проектирование операций классов интерфейса устройств. Экземпляры класса интерфейса устройства взаимодействуют с реальным устройством и предоставляют операции для считывания и записи.

В классе интерфейса устройства всегда есть операция инициализировать. Когда создается объект класса, эта операция вызывается с целью инициализации устройства и всех внутренних переменных объекта. Что касается других опера­ций, то они зависят от конкретного устройства. Например, в интерфейсе устрой­ства ввода, скорее всего, будет операция читать, а в интерфейсе устройства вы­вода – операция писать. В классе же, предназначенном для работы с устройством ввода/вывода, вероятно, будут обе операции.

9.4.2. Классы интерфейса устройства ввода. В классе интерфейса устройства ввода необходима операция инициализи­ровать, предназначенная для инициализации устройства и установки внутрен­них переменных класса. Для устройства ввода обычно требуется операция читать. Реализация этих операций зависит от характеристик конкретного устройства, но от пользователей устройства она должна быть скрыта.

В качестве примера рассмотрим объект Интерфейс Бензобака, у которого есть операции инициализировать и читать. Аналитическая модель (рис.9.3а) показывает, что этот объект получает запрос Читать Количество Топлива от объекта Расход Топлива. Затем объект Интерфейс Бензобака просит объект Бензобак сообщить, сколько бензина осталось. В проектной модели (рис.9.36) вызывается операция читать внешнего объекта Бензобак, которая возвращает ответ данныеБензобака. Как это происходит на самом деле, зависит от реализа­ции физического интерфейса. Так или иначе, объект Интерфейс Бензобака возвращает вызываю­щему объекту количествоТоплива.

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

Класс Интерфейс Бензобака также изображен на диаграмме класса (рис.9.3в). У него две операции. Операция инициализировать вызывается в начальный мо­мент. Для операции читать указан выходной параметр количество Топлива. Та­ким образом, сигнатура операции на диаграмме класса идентична тому, что мы видим на диаграмме кооперации.

9.4.3. Классы интерфейса устройства вывода. Класс интерфейса устройства вывода также должен иметь операцию иници­ализировать. Кроме того, в нем должна быть операция вывода. Например, в классе интерфейса устройства Дроссель есть операция вывести. Но если устрой­ство вывода может выполнять различные действия, то состав операций класса необходимо адаптировать. Так, класс Устройство Выдачи Наличных имеет опе­рацию выдатьНаличные, класс Устройство Печати Чеков – операцию напечататьЧек, класс Дверь Лифта – операции открыть и закрыть, а класс Мотор Лифта – операции вверх, вниз и стоп.

Рис.9.3. Пример класса интерфейса устройства ввода:

а – аналитическая модель (диаграмма кооперации); б – проектная модель (диаграмма кооперации); в – проектная модель (диаграмма классов)

Рассмотрим диаграмму кооперации из аналитической модели на рис.9.4а. Объект Интерфейс Маршрутного Дисплея, помеченный стереотипом «интерфейс устройства вывода», получает сообщения Средняя Скорость и Средний Рас­ход и выводит их на Маршрутный Дисплей.

Рис.9.4. Пример класса интерфейса устройства вывода:

а – аналитическая модель (диаграмма кооперации)

В классе Интерфейс Маршрутного Дисплея (рис.9.4в) есть две операции: вывестиСреднююСкорость (скорость) и вывестиСреднийРасход (расход Топлива). В данном случае объект-алгоритм Средняя Скорость вызывает опера­цию вывестиСреднююСкорость, передавая текущее значение средней скорости. На диаграмме кооперации в проектной модели это изображено в виде синхронного сообщения без возвращаемого значения (рис.9.46). Соответственно объект-алго­ритм Расход Топлива вызывает операцию вывестиСреднийРасход, передавая текущее значение расхода топлива. Класс Интерфейс Маршрутного Дисплея скрывает информацию о том, как форматируются данные и как осуществляется взаимодействие с физическим Маршрутным Дисплеем.

Рис.9.4. Пример класса интерфейса устройства вывода:

б – проектная модель (диаграмма кооперации);

в – проектная модель (диаграмма классов)

Соседние файлы в предмете Системы реального времени