|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Многофайловые программы: библиотеки классов, интерфейс, реализация. Структура многофайловых приложенийПри разработке достаточно больших программ бывает удобным разрабатывать программу не в виде одного файла, а в виде нескольких. В отдельном файле сохраняем функцию main(), подпрограммы — каждую в отдельном файле или группируем по назначению. Что это даёт? Подпрограмма, сохранённая в отдельном файле, может быть очень легко использована в другой программе. Достаточно будет только подключить к проекту новой программы файл с этой подпрограммой. Библиотеки классов В традиционном процедурно-ориентированном программировании долгое вре- Библиотеки обычно содержат очень широкий спектр готовых функций, при- Поскольку C++ построен на классах, а не на функциях, неудивительно, Поэтому библиотеки классов являются более важным предметом при про- Крайне важный пример библиотеки классов, который мы увидим в главе 15, Обычно библиотека классов состоит из интерфейса (interface) и реализации Интерфейс Назовем того человека, который написал библиотеку классов, разработчиком Для того чтобы библиотеку можно было использовать, программисту необ- Объявления в заголовочных файлах должны быть общедоступными по не- Эти определения называются интерфейсом, потому что это та часть библио- Реализация Если интерфейсную часть можно назвать фасадом здания, то реализация пред- На рис. 13.1 показано, как соотносятся между собой компоненты многофай- Сборка программы. Процесс создания программы из исходных файлов называется сборкой (building). Сборка включает в себя две стадии: компиляцию (compiling) и связывание (linking, другой перевод - компоновка). Во время компиляции происходит создание объектных файлов (обычно с расширением.obj) из исходных (с расширением.cpp или.cc) и заговочных (с расширением.h). После того как скомпилировались объектные файлы в дело вступает компоновщик и связывает объектные и библиотечные файлы (c расширением.lib). В конце сборки, если ни компилятор, ни компоновщик не выдали ошибок, мы получем исполняемый файл (с расширением.exe). Создайте новый проект (или даже решение). Создайте в нём файл pg. Добавьте ещё один исходный файл, например, sub_lib. В первый файл скопируйте всё содержимое pseudo_game из урока по структурам. Сейчас Вы можете запустить программу, она прекрасно работает. Два эти файла находятся в одном проекте и связываются компоновщиком в объектный файл. Эти два файла могут использовать общие переменные с помощью ключевого слова extern. Они могут использовать общие функции. Для этого в одном из них функция должна быть объявлена, а в другом определена. Чтобы использовать общие структуры в файлах, потребуется написать определения структур в каждом файле. Заметьте, что файлы никак не связаны друг с другом: не нужно указывать о существовании файла sub_lib.cc в pg.cc, за нас это делает компоновщик. Для облегчения взаимодействия между файлами используют заголовочные файлы (с расширением.h). Мы уже сталкивались с ними: с помощью директивы #inlude мы добавляли заголовчные файлы в наши программы. Напомню, что директива #include копирует содержимое заголовочного файла (вообще-то любого файла, который вы укажете), в файл где она вызывается. Угловые скобки говорят компилятору, что заголовочный файл нужно искать в специальных папках. Давайте добавим заголовочный файл в нашу программу. Назовите его sub_lib.h. Имя этого файла может быть любым и оно необязано совпадать с именем второго исходного файла. для добавления заголовчного файла выберите File -> New -> File, а в открывшемся окне выберите Header file (.h). Присоедините его к проекту. В заголовочный файл вынесите все директивы #include, определение структуры tank, определение перечисления cardinal_dirs, определения констант и объявления всех функций. Всё это удалите из первого файла и добавьте только одну строчку: #inlcude "sub_lib.h"; Вместо угловых скобок, в данном случае мы используем кавычки. Они говорят, что заголовочный файл нужно искать в каталоге проекта. В файл sub_lib.cc добавьте эту же директиву и скопируйте все функции кроме main() из файла pg.cc. Ну вот в общем и всё! Программа работает: мы можем передвигаться по полю, у нас всё ещё кончается топливо, а наш болван всё так же жизнерадостно совершает броуновское движение. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |