Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 12
На сайте нет зарегистрированных пользователей

Пользователей: 13,361
новичок: uehuat
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование системы управления качеством производственного процесса на...
База данных студентов на Delphi (файл записей) + Блок схемы
Обучающая и тестирующая программа по здаче экзамена ПДД на Turbo Pascal ...

Программы и модули
Большую программу невозможно написать, не разбив ее на части. До сих пор мы изучали механизмы логической декомпозиции программы: классы и функции. Однако большие программы требуется разбивать на части еще и физически. Обычно отдельная часть большой программы называется модулем. Разбиение программы на части выгодно по многим причинам: отдельные части крупного проекта могут одновременно разрабатываться разными программистами; с небольшим модулем быстрее и удобнее работать; разбиение способствует инкапсуляции, что облегчает обнаружение и исправление ошибок.
Разделить программу на части — это только половина работы. Отдельные модули сами по себе функционировать не будут — программу требуется снова собрать в единое целое. Обычно сборка осуществляется одним из двух способов: во-первых, можно объединить исходные тексты, во-вторых, программу собрать можно и из объектных модулей. Объектный модуль — это результат трансляции одного модуля. Такой способ называется раздельной трансляцией.
Основным достоинством первого подхода является простота, а главный недостаток — необходимость транслировать большую программу. Этот процесс может занимать очень много времени.
Во втором варианте объединяются объектные модули. Собственно, этот способ и был придуман для того, чтобы избежать трансляции всей программы целиком. Процесс сборки программы из объектных модулей называется компоновкой, и выполняет эту работу специальная программа, которая обязательно входит в состав любой системы программирования. Эта программа называется компоновщиком, но программисты часто называют ее линкером (linker).
При компоновке в программу собираются не только разработанные нами модули, но и стандартные модули. Стандартные модули, естественно, не транслируются вместе с нашей программой — они поставляются вместе с системой в виде объектных модулей и объектных библиотек. Если вы напишете в программе вызов некоторой стандартной функции, например sqrt(x), то компоновщик разыщет среди стандартных модулей тот, в котором записана эта функция, и присоединит ее к программе.
Обычно в реальном программировании используется сочетание обоих подходов: в единую программу компонуются объектные модули, но отдельный объектный модуль может собираться из нескольких модулей с исходным текстом. В С++ объединение исходных текстов делается с помощью препроцессора.
Таким образом, мы можем разбить большую программу на файлы, оттранслировать их по отдельности, а потом собрать в единое целое. Однако в С++ отсутствуют конструкции для обозначения модуля. Вместо этого в стандарте определено понятие единицы трансляции (см. п. п. 2/1 в [1]). Единица трансляции — это отдельный файл с исходным текстом на С++, который получается после обработки препроцессором. Поэтому в дальнейшем мы будем использовать термины «файл» и «модуль» как синонимы. В С++ отсутствуют также конструкции для сборки объектных модулей в исполняемую программу — это делается средствами интегрированной среды. Обычно в интегрированной среде создается проект, в составе которого указываются все исходные и объектные модули.
ПРИМЕЧАНИЕ
Средства определения и сборки модулей включены во многие языки. В клонах Modula й Oberon модуль является основной конструкцией. В языке Turbo Pascal модуль обозначается зарезервированным словом unit, а использование модуля в программе можно указать директивой uses. В Java модуль (пакет) обозначается зарезервированным словом package, а подключение пакета задается оператором import.

Раздельная трансляция требует согласования объявлений и определений в разных единицах трансляции. Если что-то не согласовано, то мы получим ошибку либо при компиляции, либо при компоновке. Во всех единицах трансляции должны быть согласованы объявления классов, функций, переменных и констант, перечислений, шаблонов и пространств имен.
Опубликовал Kest January 15 2014 11:58:52 · 3 Комментариев · 5521 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
YaXniZkij January 15 2014 13:41:17
Да, хорошую прогу без разбиения на модули не напишешь, это точно)) Помню как я на первом курсе в универе писал жуткого вида РГЗ на 1000 строк и все в одном модуле. Ну и намучился тогда! Зато научился в куче кода искать нужную строчку))
Зато сейчас печалей не знаю. Разбил на модули в каждом модуле своя подпрограмма, решающая конкретную задачу! Удобно!
Роберт January 15 2014 18:31:13
"Разделяй и властвуй" вот мой тезис даже при написании простой программы.
Это правило, которое я выучил сразу. Разделение кода на автономные части дает вам не толь легкую читабельность кода, но и его функциональность в плане повторного использования.
Один раз написав часть кода можно его использовать и в других программах. Тоже относиться и к классам, только там сложнее.
Vladimir B. January 15 2014 19:36:59
Немного сложновата техническая сторона реализации вашей информации, но, думаю это того стоит. Я ошибался раньше, предполагая, что разбивая программу на части, потеряю много времени. Но, ознакомившись с весьма поучительной и полезной информацией из вашей статьи пришел к выводу,что: следуя определенным правилам, от создания большой программы с исходными и объектными модулями будет больше практической пользы.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Microsoft Press -...
Размещение элемен...
Counter [Исходник...
Файловый менеджер
VFW
Шкрыль А. - Разра...
Песочные часы
БД сеть компьютер...
Программа для рис...
Globus VCL Extent...
База Allsubmitter...
Ehlib
Delphi 6/7 базы д...
Dreamsoft Progres...
Info
Создание лабиринт...
Flud Vkontakte.ru
Стелтинг Стивен, ...
Последние загруж...
TsHintManager

Топ загрузок
Приложение Клие... 100772
Delphi 7 Enterp... 97809
Converter AMR<-... 20260
GPSS World Stud... 17014
Borland C++Buil... 14189
Borland Delphi ... 10267
Turbo Pascal fo... 7372
Калькулятор [Ис... 5972
Visual Studio 2... 5206
Microsoft SQL S... 3661
Случайные статьи
1. Вы мэр небольшо...
Изучение средств D...
Хотя компьютеры, в...
Глава 7. Четыре...
Обмен данными межд...
Протокол РоЕ
мало для подчиненн...
Для восстановления...
Создание объекта D...
От издательства
10.1. Краткое вве...
4.3. Принципы
Играть в онлайн ка...
Топология сети
Отсутствие списка ...
Групповая политика...
Самостоятельное ра...
ЦЕЛЬ: ИСПОЛЬЗОВАН...
Функция GetBkColor...
Сайт DigitalDemogr...
Моделирование диск...
5. КОС отсылает эт...
Центральный процессор
Сортировка простым...
Задание на моделир...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?