Void Display(void); // Функция-// членСтр 1 из 6Следующая ⇒
Пример дата и время В С объявили бы структуру, подобную следующей: struct TTime { int year; int month; int day; int hour; int minute; }; Члены TTime сохраняют компоненты значений даты и времени. Лишнее T в TTime означает тип (type) - это соглашение, которое помогает отличать имена типов данных от прочего. В соответствии с этой структурой можно объявить переменную типа TTime следующим образом: TTime ap; С++ позволяет опустить ключевое слово struct перед TTime, обязательное в С. В соответствии с данным объявлением можно присвоить значения членом переменой appointment с помощью следующих операторов: ap.year = 1996 ; ap.month = 7 ; ap.day = 14; ap.hour = 8 ; ap.minute = 30 ; В программе, использующей множество структур TTime, вероятно потребуются функции вывода даты и времени, изменение членов структуры, сравнение двух дат и т.п. функцию отображения времени: void Display(struct TTime *tp) { char buffer[32]; sprintf(buffer, “Date:%02d%02d%04d Time:%02d:%02d\n”, tp-> month, tp->day, tp->year, tp-> hour, tp->minute); cout << buffer; } Чтобы отобразить дату и время, можно передать в операторе вызова функции Display() адрес структуры apтипа TTime: Display (&ap); Старое эмпирическое правило гласит: данные формируют код.
Введение в понятие класса Рассмотрим возможное представление даты и времени в классе и его преимущество.
Класс - это вид структуры, инкапсулирующей данные и функции в удобную упаковку (рис. 2.1) .
рис. 2.1. инкапсуляция данных и функций в классе
Приведем предыдущую структуру TTimeв виде Класса с инкапсулированными функциями и данными:
class TTime { Public: //Спецификатор //доступа Int year; //Данные-//члены Int month; // -//- Int day; // -//- Int hour; // -//- Int minute; // -//- void Display(void); // Функция-// член }; Объявление класса очень похоже на объявление структуры TTime, исключая тот факт, что оно начинается с ключевого слова class. Спецификатор доступаpublic открывает доступ ко всем членам, следующим за ним, для всех пользователей класса, поэтому такие члены называются открытыми. Данные-члены в классах в точности такие же, как в данные-члены в структуре. Данные-члены, такие как year, month и day,могут быть переменными, указателями, ссылками, массивами, структурами и т.п. Они могут быть так же и объектами класса. Конечно, члены не могут использовать спецификаторы классов памяти auto, extern или register. Функции-члены класса, такие, как Display(), объявлены прототипами функций. Предположительно, функции-члены, подобные Display() в TTime, выполняет некоторые операции над данными-членами класса. Тело функции размещается в другом месте программы.
В листинге 2.1 используется класс TTime в программе на С++ и демонстрируется выполнение функции-члена.
Листинг 2.1. CLASS.CPP (класс TTime) 1: #include <iostream.h> 2: #include <stdio.h> 3: 4: class Ttime { 5: public: // спецификатор //доступа 6: int year; // данные-члены 7: int month; // “ “ 8: int day; // “ “ 9: int hour; // “ “ 10: int minute; // “ “ 11: void Display(void); // функция-член 12: }; 13: 14: main() 15: { 16: Ttime app; // Объект (экземпляр) типа //TTime 17: //инициализация данных-членов // объекта (Оператор точки следует //использовать для ссылок на открытые данные-//члены класса) 18: app . month = 7; 19: app. day = 14; 20: app . year = 1996; 21: app . hour = 8; 22: app . minute = 30; 23: cout << “App == ”; 24: app.Display(); // вызов функции-члена 25: cout << “/n”; 26: return 0; 27: } 28: //реализация тела функции Display() 29: void Ttime ::Display(void) 30: { 31: char s[32]; 32: sprintf(s, “date: %02d/%04d Ttime: %02d:%02d\n”, 33: month, day, year, hour, minute); 34: cout<< s; 35: } В строках 4-12 объявляется класс TTime. Обычно объявления классов пишутся в заголовочных файлах но можно вставить его непосредственно в программный модуль, как в этом примере. В строках 29-35 приводится реализация тела функции Display(). ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|