Постепенно сформировалось понятие модуля как механизма абстракции и была разработана синтаксическая конструкция, названная модулем, предполагаемая к использованию наравне с подпрограммами, как конструкция, надежно скрывающая детали реализации некоторой подзадачи, в отличие от подпрограмм, которые не могли этого обеспечить, т.к. имели влияние глобальных переменных. Модулем может быть любая отдельная подпрограмма, как самого нижнего уровня иерархии, так и самого верхнего уровня, на котором происходят только вызовы других подпрограмм-модулей, предназначенная для функционально законченной обработки данных. Умение определять состав и назначение модулей программы определяет квалификацию и уровень профессиональной подготовки программиста. При этом необходимо учитывать:
§ Программа должна разделяться на независимые части – модули
§ Модуль – независимый блок, код которого физически и логически отделен от кода других модулей.
§ Модуль выполняет только одну логическую функцию
§ Размер модуля не должен превышать 100 операторов.
§ Модуль имеет одну входную и одну (или несколько) выходных точек.
§ Взаимосвязи между модулями устанавливаются по иерархической структуре.
§ Каждый модуль должен начинаться с комментария, объясняющего его назначение, назначение переменных, передаваемых в модуль и из него, модулей, которые его вызывают, и модулей, которые вызываются из него.
§ Избегать ненужных меток и использовать оператор безусловного перехода только для переходов на входную или выходную точку модуля, или вообще не использовать.
§ Идентификаторы всех переменных должны быть смысловыми.
§ Родственные группы идентификаторов должны начинаться с одинакового префикса.
§ Использовать только стандартные управляющие конструкции (выбор, цикл, выход, блок).
§ В одной строке записывать не более одного оператора. Если для записи оператора требуется больше, чем одна строка, то все последующие строки записываются с отступами.
§ Не допускать вложенности условных операторов более 3-х уровней.
§ Избегать «трюков» с неочевидной семантикой.
В С++ уровень абстракции программы повышается с помощью группировки функций (как единственного вида подпрограмм) и связанных с ними данных в отдельные файлы (модули), компилируемые раздельно. Получившиеся в результате компиляции объектные модули объединяются в исполняемую программу с помощью компоновщика. Разбиение на модули уменьшает время перекомпиляции и облегчает процесс отладки, скрывая несущественные детали за интерфейсом модуля и позволяя отлаживать программу по частям (или разными программистами). Модуль содержит данные и функции их обработки. Другие модули пользуются для обработки данных функциями первого модуля. Чтобы использовать модуль, нужно знать только его интерфейс, а не детали реализации. Скрытие деталей реализации называется инкапсуляцией. Пример инкапсуляции – помещение фрагмента кода в функцию и передача всех необходимых ей данных в качестве параметров. Чтобы использовать такую функцию, надо знать только ее интерфейс, определяемый заголовком (имя, тип возвращаемого значения, типы и количество параметров). Интерфейсом модуля являются заголовки всех функций и описания доступных извне типов, переменных и констант. Описания глобальных программных объектов во всех модулях программы должны быть согласованы.
Модульность в С++ поддерживается с помощью директив препроцессора, пространств имен, классов памяти и раздельной компиляции.
Функция – это именованная последовательность описаний и операторов, выполняющая какое-либо законченное действие. Функция может принимать параметры и возвращать значение. Функция начинает выполняться в момент вызова.
Любая программа в С++ состоит из функций, из которых одна должна иметь имя main (с нее начинается выполнение программы).
Типы функций:
· активные (выполнение начато, но не закончено),
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.