После этого можно написать функцию
Sampler sampler;
void acquire(Tick t){
sampler.sample(t);
}
После этого можно написать функцию main, где просто происходит присоединение к таймеру функции обратного вызова и запускается процесс опроса датчиков:
main() {
Timer::setCallback(acquire);Timer::startTiming();while(1);return 0;
}
Это довольно типичная для объектно-ориентированной системы главная функция: она короткая (потому что основная работа делегирована объектам) и включает в себя цикл диспетчеризации (в нашем случае пустой, так как отсутствуют какие-либо фоновые процессы).
Продолжим рассмотрение нашей задачи. Определим теперь внешний интерфейс класса
Sensors (датчики). Мы предполагаем, что существуют различные конкретные классы датчиков:
class Sensors : protected Collection {public:
Sensors();virtual ~Sensors();void addSensor(const Sensor& SensorName, unsigned int id = 0);unsigned int numberOfSensors() const;unsigned int numberOfSensors(SensorName);Sensor& sensor(SensorName, unsigned int id = 0);
protected:};
Это, в основном, класс-коллекция и поэтому он объявляется подклассом фундаментального класса
Collection. Класс
Collection указан как защищенный суперкласс; это сделано для того, чтобы скрыть детали его строения от клиентов класса
Sensor. Обратите внимание на то, что набор операций, который мы определили для класса
Sensors, крайне скуден - это вызвано ограниченностью задач класса. Мы, например, знаем, что датчики могут добавляться в коллекцию, но не удаляться из нее.
Таким образом, мы изобрели класс-коллекцию для датчиков, который может содержать множество экземпляров датчиков одного и того же типа, причем каждый экземпляр своего класса имеет уникальный идентификационный номер, начиная с нуля.
Вернемся к спецификации класса
Sampler. Нам надо обеспечить его ассоциацию с классами
Sensors и
DisplayManager:
class Sampler {public:
Sampler(Sensors&, DisplayManager&) ;
protected:
Sensors& repSensors;DisplayManager& repDisplayManager;
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий