Здавалка
Главная | Обратная связь

Void Display(void); // Функция-// член



Пример

дата и время

В С объявили бы структуру, подобную следующей:

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 Все права принадлежат авторам размещенных материалов.