Re[5]: Адресация данных в структуре
От: Кирилл Лебедев Россия http://askofen.blogspot.com/
Дата: 10.04.08 11:10
Оценка: +2
Здравствуйте, ArtK, Вы писали:

AK>Какие устройства — не имеет значение. Для меня устройство — чёрный ящик, из которого торчат данные, которые я могу считать.

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

Уверен, что такое абстрагирование идёт не от Заказчика. И как бы ни пытались Вы написать супер-абстрактный код, всё равно программе придётся взаимодействовать лишь с ограниченным набором устройств. Потому что этот набор однозначно задаётся целями использования программы, т.е. теми возможностями, ради которых и писалась программа. А супер-универсальные системы невозможно создать ни в реальном мире, ни в софте. Машина, которая ездит, летает в воздушном и безвоздушном пространстве и плавает под водой бывает только в фантастических фильмах.

Поэтому при проектировании приложения нужно "плясать" от реальных задач (функциональности программы), а не от различных устройств, которые, мол, можно менять как угодно на что угодно и когда угодно.

КЛ>>Какие конкретно данные нужны от каждого из устройств? Какие данные нужны от амперметра? Какие — от вольтметра?

AK>Для простоты предположим, что я могу считать данные четырёх базовых типов:
Нужно не представление на языке программирования, а семантика данных. Например: температура, скорость, сила тока и т.п.

КЛ>>И какие именно нужны из них?

AK>Это должно настраиваться.
Данные, которые нужно архивировать, определяются не настройками, а графиками, которые будет строить программа. Так, если Вам нужно рисовать трек, то, по-любому, придётся хранить широту и долготу, полученные в определённые моменты времени.

Если Вам так уж нужна абстракция от датчиков, то преобразуйте данные, которые получает класс, к массиву вариантов, и перебирайте этот массив поэлементно, выбирая то, что нужно.

Но мой Вам совет: избегайте излишнего абстрагирования. Рассмотрите только те устройства, с которыми работает программа. И архивируйте только те данные, которые нужны для статистики или графиков. Т.е. проектируйте от реальных задач, а не от устройств.
С уважением,
Кирилл Лебедев
Software Design blog — http://askofen.blogspot.ru/
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.