Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП.doc
Скачиваний:
77
Добавлен:
07.03.2016
Размер:
1.78 Mб
Скачать

Void main()

{

List L;

L.add(5);

L.add(4);

L.insert(5,25);

L.insert(25,100);

L.print();

L.print_back();

L.remove(25);

L.print();

}

Об'єднання модулів в єдину програму здійснюється препроцесором по директиві включення:

#include им’я_файлу

Ім’я файлу задається або у вигляді "файл", або у вигляді <файл>. У першому варіанті передбачається, що модуль-файл повинен знаходитися в поточному каталозі – там же, де знаходиться файл main.cpp. Можна помістити файл, що підключається, в будь-який каталог, але тоді потрібно указувати його повне ім'я, наприклад

"c:\\Piter\\ch1\\List.cpp"

або

"с:/Chab/chl/List.срр"

Друга форма <файл> застосовується для включення стандартних бібліотечних файлів. Файл шукається препроцесором в стандартному каталозі інтегрованого середовища \include. У цей каталог можна поміщати і власні файли-модулі. Ім'я файлу потрібно указувати абсолютно точно. Пропуски усередині кутових дужок або усередині лапок – значущі, тому без необхідності додаткові пропуски писати не можна.

Імена стандартних файлів-заголовків рекомендується писати без розширення .h. Щоб попередити можливі конфлікти імен, заголовки бібліотек C слід починати з символу "с". У складі C++ є 32 системних файлів-заголовків:

<algorithm> <iomanip><list> <queue> <streambuf>

<bitset> <ios> <locale> <set> <string>

<complex> <iosfwd> <map> <sstream> <typeinfo>

<deque> <iostream><memory> <stack> <utility>

<exception> <istream> <new> <stdexcept> <valarray>

<fstream> <iterator> <numeric> <strstream> <vector>

<functional> <limits> <ostream>

та 18 стандартних файлів-заголовків, успадкованих від С:

<cassert> <siso646><csetjmp><cstdio> <ctime>

<cctype> <climits> <csignal> <cstdlib> <cwchar>

<cerrno> <clocale> <cstdarg><cstring> <cwctype>

<cfloat> <cmath> <cstddef>

9.3 Відділення інтерфейсу від реалізації

Зазвичай інтерфейс класу (який є його визначенням) відділяється від його реалізації. Інтерфейс класу і визначення статичних полів поміщаються у файл-заголовок ім’я_файлу.h (заголовок, "шапка" – від англійського header); "вартового" включення потрібно задати в заголовку. Реалізація методів класу виноситься в окремий файл ім’я_файлу.срр. До інших модулів, які використовують даний клас, підключається тільки заголовок; заголовок підключається і до файлу з реалізацією методів.

/*TClass.h, файл з інтерфейсом класу */

// необхідні системні заголовки

#ifndef _STRAG // "вартовий" визначений?

#define _STRAG // визначення "вартового"

class TClass

{ // поля та прототипи методів

};

#endif /*_STRAG */ // кінець ifndef

// визначення статичних полів

/* TClass.срр, файл с реалізацією класу */

// необхідні системні заголовки

#include "TClass.h"

// реалізація методів зовнішнім способом

У проект інтегрованого середовища включаються файл реалізації і файл з програмою-клієнтом. Файл-заголовок до складу проекту зазвичай не входить.

Розділення класу на інтерфейс і реалізацію не заважає спадкуванню. Клас- спадкоємець теж ділиться на інтерфейс-заголовок і реалізацію; заголовок базового класу підключається до заголовка класу-спадкоємця.

/* Base.h, файл з інтерфейсом базового класу */

// необхідні системні заголовки

#ifndef _STRAGBASE // "вартовий" визначений?

#define _STRAGBASE // визначення "вартового"

class Base

{ // поля та прототипи методів

};

#endif /* _STRAGBASE */ // кінець ifndef

// визначення статичних полів

/* Base.срр. файл з реалізацією базового класу */

// необхідні системні заголовки

#include "Base.h"

// реалізація методів зовнішнім способом

/* Derive.h, файл з інтерфейсом класу-спадкоємця */

// необхідні системні заголовки

#include "Base.h" // для спадкування!

#ifndef _STRAGDERIVE // "вартовий" визначений?

#define _STRAGDERIVE // визначення "вартового"

class Derive: public Base

{ // поля та прототипи методів

};

#endif /* STRAGDERIVE */ // кінець ifndef

// визначення статичних полів

/* Derive.срр. файл з реалізацією класу-спадкоємця */

// необхідні системні заголовки

#include "Derive.h"

// реалізація методів зовнішнім способом

У проект включаються файли реалізації базового класу, похідного і код програми-клієнта.