Абстракция ввода информации с клавиатуры имеет вид:
Имя: Key Pad
Ответственность:
Поддержание информации о коде последней нажатой клавиши
Операции:
Last Key Press
Атрибуты:
Key
Заметим,что этот класс не знает о назначении той или инойклавиши.Экземпляр этого класса несет информацию лишь о отом,какая клавиша была нажата.За интерпритацию отвечает др.класс(кторый будет определен позднее).
Абстракция :класс LCD Device,предназначенный для того чтобы обеспечить определенную независимостьпрограммной системы от аппаратной части, на которой она будет работать.
Приведем один из возможных прототипов.Дисплей метеорологической станции:
ДАТА 28-12-01
ВРЕМЯ 15:02:14
ТЕМПЕРАТУРА 14’С
ДАВЛЕНИЕ 28.87
ВЛАЖНОСТЬ 41%
Требования к графике можно выразить с помощбю след.абстракции:
Имя:
LCD Device
Ответственность:
Управление выводом на экран профилактических элементов
Операции:
Draw Text
Draw Line
Draw Cirell
Set TextSize
Set TextStyle
Set PenSizе
Сделаем упрощающее предположение о том, что таймер будет один на всю систему, и что системное пррывание будет осуществляться с периодичностью 10 раз в секунду. Лучше, если детали реализации такого таймера будут скрыты от остальных абстракций.Для этого нужно организовать еще один класс, использующий функцию обратного вызова и экспортирующий только статические элементы класса. Тем самым будет наложено ограничение на систему, запрещающее создание более чем одного таймера.
ПРИМЕР диаграммы взаимодействия, иллюстрирующий применение данной абстракции
Имя:
Timer
Ответственность:
Осуществление прерываний и диспетчирезация функции обратного вызова
Операции:
SetCallBack()
ВИ Определив в рамках нашей системы основные абстракции, продолжим анализ задачи и рассмотрим более подробно некоторый ВИ системы
Вначале составим список ситуаций с точки зрения пользователя:
Мониторинг первичных измеряемых параметров:скорости и направления ветра, температуры, барометрического давления и влажности.
Мониторинг производимых параметров:коэффициента жесткости погоды, точки образования росы, трендов температуры и барометрического давлния.
Показ max и min значений выбранных параметров.
Установка времени и даты.
Калибровка выбранных датчиков.
Включение системы.
Добавим еще две дополнительных ситуации:
Отказ питания
Отказ датчиков
Исследуем вышеприведенные ВИ , чтобы понять поведение системы. Главной задачей системы является мониторинг основных измеряемых араметров.Дополнительный анализ показывает, что для своевременной регистрации изменения различных погодных параметров достаточно обеспечить следующие частоты снятия информации:
Каждую 0,1сек – направление ветра
Каждые 0,5сек – скорость ветра
Каждые 5 мин – температуру, барометрич-е давление и влажность.
Ранее было принято решение о том, что классы датчиков не должны отвечать за рганизацию периодических измерений.Эта работа лежит в сфере ответственности внешнего агента взаимодействующего датчика.
Приведем диаграмму взаимодействия, иллюстрирующую сценарий его работы:
Такая схема, в отличие от той, где каждый датчик самостоятельно отвечает за измерения, обеспечивает более предсказуемое поведение системы, потому что контроль за процессом считывания параметров сосредоточен в одном месте,а именно в экземпляре класса Агента.
Продолжим рассмотрение данного ВИ .Теперь следует предложить объект, который бы отвечал за вывод информации на экран дисплея.Т.е. фактически за передачу информации экземпляру класса LCD Device.И в этом случае мы выбираем вариант создания отдельного класса, а не в рамках датчика.Это позволяет изолировать в рамках одного класса все проектные решения, касающиеся механизмов реализации вывода параметров на экран.
Имя:
Display Manager
Ответственность:
Организация отображения параметров на экране дисрлея
Операции:
DrawStaticItems
DisplayTime
DisplayDate
DisplayTemperature
DisplayHumidity
DisplayPressure
DisplayWindShill //коэф. кратности погоды
DisplayWindPaint //вывод точки росы
DisplayWindSpeed
DisplayWindDerection
DisplayHighLow
Операция DrawStaticItems – рисует на экране ту часть изображения, которая не изменяется в процессе работы системы.
Приведем диаграмму, иллюстрирующую связи между абстракциями ответственную за вывод информации на экран и роль каждого из них в обеспечении заданного ВИ.
Перейдем к к рассмотрению ВИ взаимодействия пользователя и системы. Предоставление пользователю оптимальных последовательностей действий для выполнения его задач является также как и проектирование интерфейса, в большем случае искусство.
Перейдем к рассмотрению ВИ взаимодействия пользователя с системой. В качестве примера рассмотрим ВИ установки единицы измерения.
ВИ единицы измерения температуры и скорости ветра. (?C / ?F), (км/ч, миль/ч).
1. Пользователь нажимает клавишу Mode,
2. выводит на экран окно Mode,
3. пользователь нажимает одну из клавиш Wind или Tempreture все остальные клавиши кроме клавиш р и п игнорируются,
4. на экране мигание режима,
5. пользователь нажимает Up или Down и выбирается единица измерения параметра,
6. система меняет единицу измерения выбранного параметра,
7. переход управления к пункту 3 или 5.
Замечание: Для прекращения работы в данном режиме пользователь нажимает клавишу Run при этом экран дисплея возвращается в первоначальное состояние.
Аналогично выстраиваются ВИ:
1. вывод на экран max и min значения выбранного параметра,
2. установка времени и даты (исп. клавиши Left и Right, Up и Down для уменьшения и увеличения заданной величины.
После изучения ВИ работы можно определить состав и расположение клавиш на клавиатуре.
Рассмотренный ВИ можно наглядно отобразить с использованием диаграмм состояний, т. к. все ВИ тесно связаны разумно выделить отдельный класс InputManager.
Имя:
InputManager
Ответственность
Диспетчеризация команд пользователя.
Операции:
ProcessKeyPress