Новые книги

Графические интерфейсы UNIX имеют давнюю историю. Первые программные разработки в этом направлении появились более 20 лет назад. Стандартом стала распределенная система X Window, которая позволяет рисовать на экране дисплея графические изображения, поддерживает концепцию окон и унифицирует работу с различными устройствами ввода-вывода на основе библиотеки Xlib. Для того чтобы облегчить программирование с применением Xlib (X11) и упростить создание пользовательских интерфейсов, существует несколько пакетов, из которых наиболее широко распространены X Toolkit Intrinsics (Xt), Athena (Xaw) и Motif (Xm). В последние годы появились два новых пакета: GTK+ и Qt, лежащих в основе популярных среди пользователей Linux графических интерфейсов GNOME и KDE.

Именно о программировании пользовательского интерфейса UNIX в системе X Window и будет идти речь в данной книге.
В книге описано тестирование программных продуктов в Google: как устроены процессы, как организованы команды, какие техники используются, кто ответственен за качество. Принципы, на которых построено тестирование в Google, применимы в проектах и компаниях любого размера. Авторы книги сами работали над продуктами Google, создавая инструменты тестирования, настраивая процессы и занимаясь непосредственно тестированием. Книга рассчитана на профессионалов из индустрии разработки программного обеспечения: специалистов по тестированию, программистов, менеджеров.

27. Модули

27. Модули

   Модуль (UNIT) в TURBO PASCAL - это особым образом оформленная биб-

лиотека подпрограмм.  Модуль в отличие от программы не может быть за-

пущен на выполнение самостоятельно,  он может  только  участвовать  в

построении программ и других модулей.

   Модули позволяют создавать личные библиотеки процедур и функций  и

строить программы практически любого размера.

   Модуль в TURBO PASCAL представляет собой отдельно хранимую и неза-

висимо компилируемую программную единицу.

   В общем случае модуль -  это  совокупность  программных  ресурсов,

предназначенных для использования другими программами.  Под программ-

ными ресурсами понимаются любые элементы языка TURBO PASCAL: констан-

ты, типы,  переменные,  подпрограммы.  Модуль сам по себе не является

выполняемой программой, его элементы используются другими программны-

ми единицами.

   Все программные элементы модуля можно разбить на две части:

   - программные элементы,  предназначенные для использования другими

программами или модулями,  такие элементы называют видимыми вне моду-

ля;

   - программные элементы, необходимые только для работы самого моду-

ля, их называют невидимыми или скрытыми.

   В соответствии с этим модуль, кроме заголовка, содержит две основ-

ные части, называемые интерфейсом и реализацией.

   В общем случае модуль имеет следующую структуру:

 

   unit <имя модуля>;         {заголовок модуля}

 

    interface

     { описание видимых программных элементов модуля }

 

     { описание скрытых программных элементов модуля }

 

    begin

     { операторы инициализации элементов модуля }

    end.

 

   В частном случае модуль может не содержать части реализации и час-

ти инициализации, тогда структура модуля будет такой:

 

   unit <имя модуля>;         {заголовок модуля}

 

    interface

     { описание видимых программных элементов модуля }

 

    implementation

 

    end.

 

   Использование в модулях процедур и функций имеет свои особенности.

Заголовок подпрограммы содержит все сведения,  необходимые для ее вы-

зова: имя, перечень и тип параметров, тип результата для функций, эта

информация должна быть доступна для других программ и модулей. С дру-

гой стороны,   текст подпрограммы,  реализующий ее алгоритм,  другими

программами и модулями не может быть использован.  Поэтому  заголовок

процедур и функций помещают в интерфейсную часть модуля,  а текст - в

часть реализации.

   Интерфейсная часть  модуля  содержит только видимые (доступные для

других программ и модулей)  заголовки процедур и функций (без служеб-

ного слова   forward).  Полный текст процедуры или функции помещают в

часть реализации, причем заголовок может не содержать список формаль-

ных параметров.

   Исходный текст модуля должен быть откомпилирован с помощью  дирек-

тивы Make  подменю Compile и записан на диск.  Результатом компиляции

модуля является файл с расширением .TPU (Turbo Pascal Unit). Основное

имя модуля берется из заголовка модуля.

   Для подключения  модуля  к  программе необходимо указать его имя в

разделе описания модулей, например:

 

           uses  CRT, Graph;

 

   В том случае,  если имена переменных в интерфейсной части модуля и

в программе,   использующей этот модуль,  совпадают,  обращение будет

происходить к переменной,  описанной в программе. Для обращения к пе-

ременной, описанной  в  модуле,   необходимо применить составное имя,

состоящее из имени модуля и имени переменной, разделенных точкой.

   Например, пусть имеется модуль, в котором описана переменная К:

 

   unit M;

    interface

     var K: Integer;

    implementation

   .................

    end.

 

   Пусть программа, использующая этот модуль, также содержит перемен-

ную К:

 

   Program P;

    uses M;

    var K: Char;

    begin

   .............

    end.

 

   Для того, чтобы в программе P иметь доступ к переменной K из моду-

ля M, необходимо задать составное имя M.K.

   Использование составных имен применяется не только к именам  пере-

менных, а ко всем именам, описанным в интерфейсной части модуля.

   Рекурсивное использование модулей запрещено.

   Если в модуле имеется раздел инициализации,  то операторы из этого

раздела будут выполнены перед началом выполнения программы, в которой

используется этот модуль.