Мегаобучалка Главная | О нас | Обратная связь


Описание проектного решения



2020-03-17 226 Обсуждений (0)
Описание проектного решения 0.00 из 5.00 0 оценок




Анализ проекта

 

На первом этапе анализа необходимо сформулировать требования к системе. Система должна обеспечивать автоматический мониторинг следующих первичных параметров:

скорость и направление ветра;

- температура воды;

- барометрическое давление;

- влажность воздуха.

Система также должна обеспечивать следующие дополнительные функции:

- снятие показаний через заданные промежутки времени;

- вывод результатов на экран;

- сохранение измерений в файле;

- вывод данных, усредненных по заданному промежутку времени;

- отображать хронологию показаний датчиков, а так же визуально отображает усредненные значения.

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

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

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

В начале анализа рассмотрим аппаратную часть системы. Это задача системного анализа. Она включает в себя такие вопросы, как технологичность и стоимость системы, которые выходят за рамки данного курсового проекта. Для того, чтобы сузить проблему, ограничимся анализом и проектированием только программных средств, сделаем следующие стратегические предположения об аппаратной части:

Используются компьютера-сервера с одним процессором 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 - Иерархия классов индикаторов

 



2020-03-17 226 Обсуждений (0)
Описание проектного решения 0.00 из 5.00 0 оценок









Обсуждение в статье: Описание проектного решения

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...
Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (226)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)