    В новой программе для присваивания значений объекту класса appointment 
потребуется вызвать функцию-член. Например, в строке 22 выполняется оператор, 
который устанавливает дату и время в appointment равными 14 июля 1996 года, 8:30: 

    appointment.SetTime(7,   14,   1996,  8,  30); 

    Аналогично, в строке 25 вызывается функция GetTimeO для копирования 
значений данных-членов appointment в локальные переменные, объявленные в 
строке 20. Эти значения затем передаются обратно SetTime() с увеличенным на 1 
значением hour, что устанавливает в appointment следующий час. (Очевидно, это 
не идеальный путь изменения даты и времени, но вы позаботитесь об этом позже.) 

    Использование функций-членов 

    Большинство классов лучше объявлять в заголовочных файлах, которые затем 
могут включаться в многочисленные программные модули для совместного 
использования одинаковых классов. Следующие несколько листингов расширяют 
класс TTime и демонстрируют обычный способ объявления и включения классов и 
программ в нескольких модулях. 
    В листинге 13.3 объявляется новый класс TTime, схожий с объявленным в 
CLASS2.CPP, но с парочкой дополнительных функций-членов. Как и прежде, новый 
класс имеет несколько закрытых данных-членов. 
    Подобно большинству проектов, находящихся в стадии разработки, эта 
программа не лишена некоторых недостатков. Но это не имеет значения, поскольку 
проблема изменения внутреннего представления данных в классе легкоразрешима, и 
вы это вскоре увидите. 
    Как и все порядочные заголовочные файлы, TIME1.H — не программа, вы не 
можете скомпилировать и запустить ее на выполнение. Другие программные модули 
(листинги 13.4 и 13.5) включают этот заголовочный файл, делая объявления, 
содержащиеся в нем, доступными для операторов. Применение заголовочных файлов 
— не обязательный, но рекомендуемый способ улучшения организации частей программы. 

    Листинг 13.3. TIME1.H (объявление класса TTime в заголовочном файле) 

    1:	// timel.h -- Объявление класса TTime 
    2: 
    3:	#ifndef __TIME1_H 
    4:	#define _TIME1_H 1 // Предотвращение нескольких #include 
    5: 
    6:	class TTime { 
    7:	private: 
    8:	  int month; 
    9:	  int day; 
    10:	  int year; 
    11:	  int hour; 
    12:	  int minute; 
    13:	public: 
    14:	  void Display(void); 
    15:	  void GetTime(int &m,  int &d,  int &y,, int &hr,  int tain); 
    16:	  void SetTime(int m,   int d,   int y,   int hr,   int min); 
    17:	  char *GetSTime(void);                                                  
    18:	  void ChangeTime(long nminutes); 
    19:	}; 
    20: 
    21:	#endif // __TIME1_H 

    Строки 3, 4 и 21 предохраняют заголовочный файл TIME1.H от включения его в 
один модуль более одного раза. (Вы видели аналогичный прием в листинге 11.2 
главы 11.) Объявление класса TTime в заголовочном файле позволяет использовать 
этот класс в других модулях. 
    В листинге 13.4 приводятся функции-члены класса TTime. Подобная 
организация классов в заголовочных файлах и программных модулях типична. 
Следует объявлять один или несколько классов в заголовочном файле, 
заканчивающемся на .Н, и приводить тела функций-членов класса в отдельном 
файле, заканчивающемся на,.СРР. Для компиляции этого модуля из DOS введите 
команду Ьсс -с timel.c. Для компиляции его из интегрированной среды сделайте 
текущим окно с TIME.CPP, установите TargetExpert в EasyWin и нажмите <Alt+F9>. 

    ЗАМЕЧАНИЕ 

    Модуль TIME1.CPP остается все еще неполной программой <в нем не хватает 
функции main () ). Вы можете скомпилировать TIME1.CPP в объектный файл 
TIME1.OBJ, но для того, чтобы запустить результат на выполнение, вы должны 
написать ешр один модуль, содержащий main(). TIME1.CPP содержит программный 

    Глава 13. Программирование классов                                            311
