Определим начальные требования к метеостанции: система должна обеспечивать автоматический мониторинг следующих первичных параметров:
? Скорость и направление ветра
? Температура
? Барометрическое давление
? Влажность воздуха
Система должна вычислять некоторые производные параметры:
? Коэффициент резкости погоды
? Точку росы
? Относительное изменение температуры
? Относительное изменение барометрического давления
ВИ данной системы.
1. Анализ требований.
В результате анализа может сложиться следующий состав аппаратной части системы.
Диаграмма процессов.
На первых порах следует изолировать вводимые программные абстракции от излишних подробностей, скрывая их в реализации соответствующих классов. Имеет смысл создать простой класс для определения текущего времени и даты, для чего нужно провести небольшой анализ, в процессе которого следует рассмотреть роли и обязанности данной абстракции. Среди обязанностей данной абстракции следует выделить 2 услуги: предоставление информации о текущем времени(current time) и дате( current date). Операция current time возвращает текстовую строку в формате 11:33:55(час, минута, секунда). Current date возвращает строку формата 17 – 11 – 01( день, месяц, год). Дальнейший анализ показывает, что могут понадобиться более полные абстракции, позволяющие клиенту выбирать между 12 и 24 часовым форматом времени. Одно из возможных решений – введение дополнительного модификатора Set format, меняющего формат текущего времени.
Итоговое представление абстракции класса времени и даты могут быть следующими:
Имя:
Time Data
Ответственность:
Поддержание информации о текущем времени и дате.
Операции:
Current time
Current date
Set format
Set Hour
Set Minute
Set Date
Set Month
Set Year
Атрибуты:
Time
Date
Экземпляры данного класса имеют динамический жизненный цикл, который можно отобразить в диаграммах состояний и переходов.
Диаграмма жизненного цикла класса Time Data.
Класс Tempretute Sensor служит аналогом аппаратурного температурного датчика. Изолированный анализ поведения этого класса дает в первом приближении следующий результат.
Имя:
Tempreture Sensor
Ответственность:
Поддержание информации о текущей температуре
Операции:
Current Tempreture
Set low Tempreture
Set high Tempreture
Атрибуты:
Tempreture
Название current Tempreture говорит само за себя. Выполняет 2 операции – установка миним. и макс. температуры, определяется требования к системе по проведению калибровки датчиков. Сигнал от каждого датчика – число с фиксированной точкой из некоторого рабочего диапазона, граничные значения которого должны быть заданы. Промежуточные значения температуры вычисляются простой линейной интерполяцией между этими двумя точками.
Калибровка датчиков класса Temperature Sensor.
Абстракция для класса датчика барометрического давления.
Имя:
Pressure Sensor
Ответственность:
Поддержание информации о барометрическом давлении.
Операции:
Current Pressure
Set low Pressure
Set high Pressure
Атрибуты:
Pressure
И для температурного и для барометрического датчиков определим тренд – как вещественное число в диапазоне [-1;+1] и представляет собой наклон графика изменения температуры и давления на некотором интервале времени.
К описанию двух рассмотренных классов можно добавить еще одну ответственность и операцию.
Ответственность:
Определение тренда давления или температуры, как наклона графика( в линейном приближении) изменения из значений за данный интервал времени.
Операции:
Trend
Отметив сходство поведения обоих классов будет разумно создать общий суперкласс, ответственный за определение тренда – Trend Sensor.
Абстракция, соответствующая датчику влажности.
Имя:
Humidity Sensor
Ответственность:
Поддерживать информацию о текущей влажности в % от 0% до 100%
Операции:
Current Humidity
Set low Humidity
Set high Humidity
Атрибуты:
Humidity
В этом классе не ставится задача определения тренда влажности, поэтому он не является потомком класса Trend Sensor. Но требования к системе подразумевают наличие общего поведения для всех перечисленных трех классов. В частности мы должны обеспечить показ макс. и миним. значений каждого параметра за 24 часа. Эту обязанность можно отразить в следующем описании, общем для 3 классов.
Ответственность:
Поддерживать информацию о миним. и макс. значениях параметров за 24 часа.
Операции:
High value
Low value
Time of high value
Time of low value
Учитывая то, чтоданное поведение является общим для всех 3-датчиков,представляется целесообразным создание еще одного суперкласса: Hitorical Sensor. Абстракция для тчиков скорости ветра может выглядеть след.образом:
Имя:
Wind Speed Sensor
Ответственность:
Поддержание информации о текущей скорости ветра
Операции:
Current Speed
Set Low Speed
Set High Speed
Атрибуты:
Speed