Объектно-ориентированное проектирование с примерами


Определение границ рассматриваемой задачи - часть 8


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

Краткий анализ последних четырех классов системы (TemperatureSensor, PressureSensor, HumiditySensor и WindSpeedSensor) показывает, что у них имеется еще одна общая черта: калибровка измеренных значений посредством линейной интерполяции. Вместо того, чтобы реализовывать эту способность по отдельности в каждом из классов, можно выделить особый суперкласс CalibratingSensor, ответственный за выполнение калибровки.

Ответственность: Обеспечение линейной интерполяции значений, лежащих в известном интервале.

Операции: currentValue - текущее значение
setLowValue - установка минимального значения
setHighValue - установка максимального значения

CalibratingSensor является непосредственным суперклассом для класса HistoricalSensor.

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

Имя: WindDirectionSensor

Ответственность: Поддержание информации о текущем направлении ветра, указываемом как точка на розе ветров.

Операции: currentDirection - текущее направление

Атрибуты: direction - направление

Чтобы объединить все классы, относящиеся к датчикам, в одну иерархию, имеет смысл создать еще один абстрактный базовый класс Sensor, который является непосредственным суперклассом для WindDirectionSensor и CalibratingSensor. Рис. 8-4 иллюстрирует полную иерархию классов датчиков.
 

Рис. 8-4. Иерархия классов датчиков.

Абстракция ввода информации с клавиатуры имеет следующий простой вид:

Имя: Keypad

Ответственность: Поддержание информации о коде последней клавиши, нажатой на клавиатуре.




Начало  Назад  Вперед



Книжный магазин