Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Технологии разработки ПО 2005.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
833.54 Кб
Скачать

Многофайловые программы

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

При разработке приложений оказывается, что если доступны необходимые библиотеки, то для создания полнофункционального продукта необходим минимум ручной работы по программированию. Одной из часто используемых библиотек классов является Стандартная библиотека С++ (STL). Обычно библиотека классов состоит из двух частей:

  • общедоступного компонента, называемого интерфейсом (interface) и содержащего объявления классов в заголовочном файле (*.h);

  • скрытого компонента, называемого реализацией (implementation) и содержащего определения методов в объектном (*.obj) или библиотечном (*.lib) файле.

Программы могут разбиваться на части и из иных соображений, нежели работа с библиотеками классов. Допустим, некий проект разрабатывается группой программистов. Разграничив круг задач, поставленных перед каждым, можно решение каждой задачи выделить в виде отдельного файла. Такой подход позволяет лучше организовывать работу коллектива и более чётко определять взаимодействие частей программы. К тому же, в соответствии с принципами технологии программирования, большие программы разбиваются на части в соответствии с функциональной направленностью.

Рассмотрим пример многофайловой программы. Элементарная многофайловая программа обычно состоит из трёх частей:

  1. заголовочного файла, называемого интерфейсной частью программы и хранящего определение класса с объявленными, но не определёнными методами;

  2. файла реализации, называемого реализационной частью программы и хранящего определения методов;

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

// Заголовочный файл interface.h

#include <iostream>

#include <conio>

using namespace std;

//---------------------------------------------------------------------------

class Int {

private:

int i;

public:

Int() { i=0; }

Int(int d) { i=d; }

void show();

Int operator+(Int& b);

};

//---------------------------------------------------------------------------

// Файл реализации realizacia.cpp

#include "interface.h"

//---------------------------------------------------------------------------

void Int::show() {

cout << i;

}

//---------------------------------------------------------------------------

Int Int::operator+(Int& b) {

return (i+b.i);

}

//---------------------------------------------------------------------------

// Файл прикладной программы programm.cpp

#include "interface.h"

//---------------------------------------------------------------------------

int main() {

Int i1(7), i2(3), res;

res = i1 + i2; cout << "Summa = "; res.show();

getch(); return 0;

}

//---------------------------------------------------------------------------

В ИСР Borland технология создания данного многофайлового проекта выглядит следующим образом:

  1. Создаём модуль для прикладной программы: File/New/Other/Console Wizard ( C++;  Console Application). Созданный таким образом Unit.cpp сохраняем как programm.cpp в своей папке.

  2. Создаём заголовочный файл: File/New/Other/Header File. Созданный таким образом File1.h сохраняем сразу в своей папке как interface.h .

  3. Создаём файл реализации: File/New/Other/Cpp File и сохраняем его сразу как realizacia.cpp

  4. Заполняем соответствующим кодом созданные файлы (см. выше), затем сохраняем Save All как, например, mnogoF.bpr. Необходимо помнить, что в файлах реализации и прикладной программы нужно включать написанный вами заголовочный файл (#include "interface.h" ).

  5. Осуществляем компоновку(Project/Build *.bpr) и компиляцию проекта.

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