Языки программирования - концепции и принципы

Этот пример расширяет пример из


       int get_altitude() const                     {return altitude;}

       void set_altitude(int i)                       {altitude = i;}

 private:

          char id[80];

           int speed;

           int altitude;

};

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

class Airplanes {

 public:

     void New_Airplane(Airplane_Data, int &);

     void Get_Airplane(int, Airplane_Data &) const;

private:

    Airplane_Data database[100];

       int current_airplanes;

       int find_empty_entry();

};

Каждый класс разрабатывается для того, чтобы инкапсулировать набор объ­явлений данных. Объявления данных в закрытой части могут быть изменены без изменения программ, использующих этот класс и называющихся клиен­тами (clients) класса, хотя их и придется перекомпилировать. Класс имеет на­бор интерфейсных функций, которые извлекают и обновляют значения дан­ных, внутренних по отношению к классу.

    

   Вы можете задать вопрос, почему Airplane_Data лучше сделать отдельным классом, а не просто объявить обычной общей (public) записью. Это спорное проектное решение: данные должны быть скрыты в классе, если вы полагае­те, что внутреннее представление может измениться. Например, вы можете знать, что один заказчик предпочитает измерять высоту в английских футах, тогда как другой предпочитает метры. Определяя отдельный класс для

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

   За эту гибкость приходится платить определенную цену; каждый доступ к значению данных требует вызова подпрограммы:

Aircraft_Data a;                             // Экземпляр класса

int alt;

alt = a.get_altitud(e);                     // Получить значение, скрытое в экземпляре


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