Проектирование скрывающих информацию классов
Сами классы были определены на этапе разбиения на объекты, теперь речь пойдет о проектировании их операций. Классы абстрагирования данных описаны выше; в этом разделе мы разработаем остальные классы, скрывающие информацию.
11. 1. Проектирование классов интерфейса устройств
Класс интерфейса устройства скрывает истинный интерфейс с физическим устройством, предлагая вместо него виртуальный интерфейс. Для каждого типа устройств ввода/вывода имеется отдельный интерфейсный класс. Состав операций, поддерживаемых таким классом, зависит от функций, которые должен поддерживать объект интерфейса. Классы интерфейса устройств изображены на рис. 16 и описаны ниже:
- Интерфейс Датчика яркости. Предоставляет две операции: читать (считывает значение Датчика яркости) и инициализировать;
- Интерфейс Датчика движения. Предоставляет две операции: читать (считывает значение Датчика движения) и инициализировать;
- Интерфейс Выключателя. Также предоставляет две операции: читать (считывает значение Выключателя) и инициализировать;
- Интерфейс Лампы. Предоставляет операции включить и выключить, соответствующие сообщениям Включение лампы и Выключение лампы;
- Интерфейс Мотора жалюзи. Предоставляет операции поднять и опустить, соответствующие сообщениям Поднятие жалюзи и Опускание жалюзи. Каждая операция имеет один параметр, задающий уровень, на который необходимо соответственно поднять / опустить жалюзи. В частности параметр может быть формализован как промежуток времени, в течение которого работает мотор и по окончании которого мотор автоматически выключается;
- Интерфейс Монитора. Предоставляет следующие операции: отобразить (отображает схему расположения всех датчиков, ламп, моторов жалюзи, выключателей для конкретного этажа, номер которого и является параметром), сообщить о неполадке (отображает неисправные элементы системы и может сопровождаться характерным для уведомления звуком).
Рис. 16. Классы интерфейса устройств
11. 2. Проектирование классов, зависящих от состояния
В системе есть два зависящих от состояния класса - Управление лампами и Управление жалюзи, которые инкапсулирует диаграммы состояний, реализованные в виде таблицы переходов, изображённые соответственно на рис. 6 и рис. 7.
Каждый из этих классов поддерживает две операции: обработатьСобытие и текущееСостояние. Эти объекты вложены соответственно в задачи Контроллер Ламп и Контроллер Жалюзи. Поскольку задача существует в нескольких экземплярах, то и экземпляров класса будет несколько – по одному для каждого этажа. Спецификации классов представлены на рис. 17.

Рис. 17. Зависящие от состояния управляющие объекты
Date: 2016-01-20; view: 431; Нарушение авторских прав Понравилась страница? Лайкни для друзей: |
|
|