Объектно-ориентированное проектирование с примерами


         

Механизм вывода информации на экран


Подготовка следующего релиза, где должны быть окончательно определены классы DisplayManager и LCDDevice, не требует от нас новых проектных решений. Осталось лишь несколько тактических шагов, связанных с сигнатурой и семантикой некоторых функций-членов. Соединяя решения, принятые в процессе анализа, и наш первый архитектурный прототип, где мы сделали некоторые важные предположения о протоколе отображения значений, можно определить на C++ следующий интерфейс:

class DisplayManager {


public:

DisplayManager();


~DisplayManager();


void clear();


void refresh();


void display(Sensor&);


void drawStaticItems(TemperatureScale, SpeedScale);


void displayTime(const char*);


void displayDate(const char*);


void displayTemperature(float, unsigned int id = 0);


void displayHumidity(float, unsigned int id = 0);


void displayPressure(float, unsigned int id = 0);


void displayWindChill(float, unsigned int id = 0);


void displayDewPoint(float, unsigned int id = 0);


void displayWindSpeed(float, unsigned int id = 0);


void displayWindDirection(unsigned int, unsigned int id = 0);


void displayHighLow(float, const char*, SensorName, unsigned int id = 0);


void setTemperatureScale(TemperatureScale);


void setSpeedScale(SpeedScale);

protected:


// ...


};

Ни одна из приведенных операций не является виртуальной, так как создание иерархии классов вывода информации на экран не планируется, и у DisplayManager не будет потомков.

Отметим, что этот класс содержит несколько достаточно примитивных операций (таких, как DisplayTime и refresh), но в то же время обладает составной операцией display, присутствие которой во многом упрощает взаимодействие клиентов с экземпляром класса DisplayManager.

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



Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий