2 Описание проектного решения
2.1 Анализ проекта
На первом этапе анализа необходимо сформулировать требования к системе. Система должна обеспечивать автоматический мониторинг следующих первичных параметров:
скорость и направление ветра;
- температура воды;
- барометрическое давление;
- влажность воздуха.
Система также должна обеспечивать следующие дополнительные функции:
- снятие показаний через заданные промежутки времени;
- вывод результатов на экран;
- сохранение измерений в файле;
- вывод данных, усредненных по заданному промежутку времени;
- отображать хронологию показаний датчиков, а так же визуально отображает усредненные значения.
Должна быть предусмотрена возможность определения текущего времени и даты, которые будут использоваться при генерации сообщении о максимальных и минимальных значениях первичных параметров за определенный промежуток времени, а также определение времени запуска системы.
Необходимо обеспечивать постоянный вывод на дисплей текущих значений всех первичных и производных параметров, а также текущее время и дату. Пользователь должен иметь возможность увидеть максимальные и минимальные значения любого из первичных параметров за заданный интервал времени, сопровождаемые информацией о времени произведения соответствующего замера, проводить калибровку датчиков по известным опорным значениям, а также устанавливать текущие время и дату.
Теперь, представив все требования, приступим к моделированию. Разработка данной системы может показаться довольно простой задачей, решение которой позволяет обойтись всего несколькими классами и можно сделать поспешный вывод о том, что в данном случае наиболее простым и эффективным будет отказ от объектно-ориентированного подхода. Но, тем не менее, применение объектно-ориентированного подхода позволит в сжатые сроки расширить или модернизировать систему в случае необходимости.
В начале анализа рассмотрим аппаратную часть системы. Это задача системного анализа. Она включает в себя такие вопросы, как технологичность и стоимость системы, которые выходят за рамки данного курсового проекта. Для того, чтобы сузить проблему, ограничимся анализом и проектированием только программных средств, сделаем следующие стратегические предположения об аппаратной части:
Используются компьютера-сервера с одним процессором i486 и интерфейсная часть, в роли которой может выступать либо сетевая карта (для удаленных датчиков), либо порты для подключения контроллеров датчиков (порты СОМ или LТР).
Системные время и дата поддерживаются встроенными часами, соответствующие значения отображаются в оперативную память.
Температура, барометрическое давление и влажность определяются встроенными контроллерами, которые соединены с соответствующими датчиками, а те в свою очередь подключаются к серверу через его интерфейсную часть; показания контроллеров также отображены в оперативную память.
Направление ветра измеряется с точностью до одного из 8 направлений.
Ввод команд пользователем осуществляется с помощью интерфейса программы - сервера.
Экраном служит обычный дисплей.
Встроенные таймеры и датчики посылают результаты измерений на компьютер-сервер через заданный промежуток времени.
На рис. 2.1 приведена диаграмма, иллюстрирующая состав аппаратной части системы.
Рисунок 2.1 — Аппаратное обеспечение системы мониторинга погоды.
На этом этапе анализа абстрагируемся от аппаратной части, чтобы сконцентрировать внимание на программной части системы. Одной из особенностей объектно-ориентированного подхода является стремление говорить на языке проблемной области, что облегчает проведение параллелей между программными абстракциями и ключевыми понятиями исходной задачи. Изменения в аппаратной части оказывают влияние лишь на некоторые нижние уровни системы.
Имеет смысл создать простой класс TemperatureSensor (температурный датчик) служит аналогом аппаратного температурного датчика нашей системы. Изолированный анализ поведения этого класса дает в первом приближении следующий результат:
Имя:
TemperatureSensor
Ответственность:
Поддержание информации о текущей температуре. Операции:
CurrentTemperature – текущая температура
SetLowTemperature - установка минимальной температуры
setHighTemperature — установка максимальной температуры Атрибуты:
temperature - температура
Название операции CurrentTemperature (текущая температура) говорит само за себя. Назначение двух других операций (установка минимальной и максимальной температур) прямо определяется требованием к системе, а именно необходимостью проведения калибровки датчиков. Сигнал от каждого датчика - это число с фиксированной точкой из некоторого рабочего диапазона, граничные значения которого должны быть заданы. Промежуточные значения температуры вычисляются простой линейной интерполяцией между этими двумя точками, как показано на рис. 2.2.
Можно задать закономерный вопрос: зачем мы создается специальный класс для данной абстракции, когда в требованиях к системе ясно сказано, что температурный датчик может быть только один? Это верно, но в целях обеспечения возможности повторного использования абстракции мы все же выделяем ее в отдельный класс. На самом деле количество температурных датчиков не должно влиять на архитектуру нашей системы, и, выделяя отдельный класс TemperatureSensor, мы открываем возможность его использования в других программах подобного типа.
Абстракция для датчика барометрического давления может выглядеть следующим образом:
Имя:
Pressuresensor
Ответственность:
Поддержание информации о текущем барометрическом давлении. Операции:
currentPressure – текущее давление
setLowPressure – установка минимального давления
setHighPressure - установка максимального давления Атриуты:
pressure - давление
Абстракцию, соответствующую датчику влажности, можно определить следующим образом:
Имя:
Humiditysensore
Ответственность:
Поддержание информации о текущей влажности, выраженной в процентах от 0% до 100%.
Операции:
CurretnHumidity - текущая влажность
SetLowHumidity - установка минимальной влажности
SetHighHumidity - установка максимальной влажности Атрибуты:
Humidity - влажность
Абстракция для датчика скорости ветра может выглядеть следующим образом;
Имя:
WindSpeedSensore
Ответственность:
Поддержание информации о текущей скорости ветра. Операции:
CurrentSpeed - текущая скорость
SetLowSpeed - установка минимальной скорости
SetHighSpeed - установка максимальной скорости Атрибуты:
speed - скорость
Требования к системе не предполагают возможности получения скорости непосредственно от датчика; текущая скорость ветра должна определяться как отношение числа оборотов на счетчике к величине интервала времени, за которое производились измерения. Полученное число затем надо умножить на калибровочный коэффициент, значение которого определяется конструкцией измерительного устройства. Этот алгоритм должен быть, естественно, реализован внутри класса. Клиенты не должны заботиться о том, каким образом посчитана текущая скорость ветра.
Последний рассматриваемый датчик - датчик определения направления ветра - несколько отличается от всех остальных, так как он не нуждается в вычислении минимальных и максимальных значений. Мы можем определить данную абстракцию следующим образом:
Имя:
WindDirectionSensor
Ответственность:
Поддержание информации о текущем направлении ветра, указываемом как точка на розе ветров. Операции:
currentDirection - текущее направление Атрибуты:
direction - направление
Чтобы объединить все классы, относящиеся к датчикам, в одну иерархию, имеет смысл создать еще один абстрактный базовый класс TDatchic, который является непосредственным суперклассом для всех классов. Рис. 2.3 иллюстрирует полную иерархию классов датчиков.
Рис.2.3 – Иерархия классов датчиков
Однако требования к системе подразумевают наличие общего поведения для всех трех вышеперечисленных классов. В частности, мы должны обеспечить показ текущих значений датчиков в графической форме.
Дня этого имеет смысл создать простой класс WindIndicator для графического представления направления ветра. Изолированный анализ поведения этого класса дает в первом приближении следующий результат:
Имя:
Ответственность:
Графическое представления направления ветра. Операции:
Update - отображение текущего направления ветра.
Абстракций для индикатора температуры TemperatureIndicator может выглядеть следующим образом:
Имя:
TemperatureIndicator
Ответственность:
Графическое представления величины температуры.
Update — отображение текущей температуры.
Абстракция для индикатора атмосферного давлении PressureIndicator может выглядеть следующим образом:
Имя:
PressureIndicator
Ответственность:
Графическое представления величины атмосферного давления. Операции:
Update - отображение текущего значения атмосферного давления.
Абстракция для индикатора влажности воздуха HumidityIndicator может выглядеть следующим образом:
Имя:
HumidityIndicator
Ответственноcть:
Графическое представления величины влажности воздуха. Операции:
Update - отображение текущего значения влажности воздуха.
Чтобы объединить все классы, относящиеся к индикаторам, в одну иерархию, имеет смысл создать еще один абстрактный базовый класс Indicator, который является непосредственным суперклассом для всех классов. Рисунок 2.4 иллюстрирует иерархию классов индикаторов.
Рисунок 2.4 - Иерархия классов индикаторов
... труда, по страхованию; выросла доля заемного капитала по сравнению с собственным, увеличилась зависимость предприятия от внешних кредиторов. Все это свидетельствует о необходимости разработки антикризисной стратегии предприятия, которая позволила бы восстановить платежеспособность предприятия и улучшать его финансовые результаты в долгосрочной перспективе. 2.5 Диагностика потенциала выживания ...
... ИД состоит в выполнении им, помимо основной функции, функции автоматического метрологического самоконтроля - контроля метрологической исправности. Для повышения эффективности проектирования интеллектуальных датчиков необходимо создание баз данных, касающихся: 1. физических и химических процессов в чувствительных элементах датчиков, порождающих рост опасных составляющих погрешности; 2. динамики ...
... нац-й культуры, изучение спектра проблем общественного сознания. ü Материальные вопросы, наличие эк-ких предпосылок для решения возникших проблем.13. Современные проблемы в развитии социально-культурного сервиса и туризма. В РФ необходимо создание тур. комплекса, обеспечивающего, с одной стороны широкими возможностями для удовлетворения потребностей росс. и иностр. граждан в тур. услугах, ...
... концентрических окружностей с уменьшающимся радиусом по мере затухания колебаний скорости и момента. Аналогичная картина наблюдается при ступенчатом набросе нагрузки. 5. РАЗРАБОТКА ВИРТУАЛЬНОЙ ЛАБОРАТОРНОЙ РАБОТЫ НА БАЗЕ ВИРТУАЛЬНОЙ АСИНХРОННОЙ МАШИНЫ Иную возможность анализа АД представляет специализированный раздел по электротехнике Toolbox Power System Block. В его библиотеке имеются блоки ...
0 комментариев