Модули
59.28K
Category: programmingprogramming

19_Модули

1. Модули

1

2.

Когда программы стали настолько большими, что к
их разработке стали привлекаться коллективы
программистов, появились модули.
Сначала большие программы просто делились на
части.
Модуль – автономно компилируемая программная
единица, включающая в себя различные компоненты
раздела описаний (типы, константы, переменные,
процедуры и функции), а также исполняемые операторы.
Компоненты раздела описаний (типы, константы,
переменные, процедуры и функции) – ресурсы модуля,
которые могут использоваться другими модулями.
Каждый модуль хранится в отдельном сегменте памяти.
Количество одновременно используемых модулей
ограничивается объемом оперативной памяти.
2

3.

Структура модуля
Модуль состоит из заголовка и 4 частей, каждая из которых
может быть пустой.
unit <имя>; заголовок модуля
interface
<интерфейсная часть>;
implementation
<иcполняемая часть или секция реализации>;
initialization
<секция инициализации>;
finalization
<завершающая часть>;
end.
В конце модуля ставится end.
Существуют стандартные модули.
Например: Forms, Controls, Graphics, Dialogs
3

4.

Заголовок модуля
Заголовок модуля состоит из слова unit и имени
модуля. Это обязательная часть модуля. Имя модуля
должно совпадать с именем файла, в котором
хранится исходный текст модуля.
unit ab;
Модуль ab должен находиться в файле с именем
ab.pas
Имя модуля используется для связи его с другими
модулями и основной программой с помощью:
uses <список используемых модулей через запятую>
Cписок модулей – это имена модулей, с которыми
этот модуль связан.
4

5.

Все программные ресурсы модуля делятся на
две части:
объекты,
используемые
другими
программами и видимые вне этого модуля
(интерфейсная часть);
- «внутренние» объекты, невидимые для
других программ (секция реализации).
5

6.

Интерфейсная часть модуля
Начинается
со
слова
interface.
Здесь
объявляются все глобальные объекты модуля
(типы, константы, переменные, подпрограммы,
объекты), которые доступны другим модулям и
главной программе.
В интерфейсной части модуля помещаются
только заголовки процедур и функций, а их текст
содержится
в
разделе
реализации
(implementation).
6

7.

Пример
unit сmpl;
interface
type
complex=record
r, i: real;
end;
procedure addc(x, y: complex; var z: complex);

Если в другом модуле написать:
uses cmpl;
то в этом модуле будут доступны:
тип complex и процедура addc.
В интерфейсной части модуля нельзя использовать
опережающее описание подпрограммы (forward).
7

8.

Объявление подпрограмм в интерфейсной части
означает, что их компиляция будет происходить с
использованием дальней модели памяти.
Существует две модели памяти: ближняя и
дальняя.
Ближняя модель памяти определяет возможность
«быстрого»
вызова
подпрограммы,
поэтому
«стандартный» вызов использует ее.
Дальняя модель памяти обеспечивает доступ к
этому модулю из других модулей, которые находятся
в разных сегментах памяти.
8

9.

Исполняемая часть модуля
(секция реализации)
Начинается со слова implementation. Все, что
описано в разделе interface, является видимым в
секции реализации. Кроме того, здесь объявляются
«свои»
типы,
константы,
переменные,
подпрограммы, объекты, которые недоступны
(невидимы) другим модулям.
Секция реализации содержит текст подпрограмм,
объявленных в интерфейсной части. В интерфейсной
части модуля помещаются только заголовки
процедур и функций, а их текст содержится в разделе
реализации.
9

10.

Пример
unit сmpl;
interface
type
complex=record
r, i: real;
end;
procedure addc(x, y: complex; var z: complex);

implementation
procedure addc(x, y: complex; var z: complex);
begin

end;

end.
10

11.

Cекция инициализации и
завершающая часть модуля
Чаще всего эти части в модуле отсутствуют.
Cекция инициализации начинается со слова initialization.
Содержит исполняемые операторы (заключаются в операторные
скобки begin end;), которые выполняются до передачи управления
основной программе и используются для подготовки ее работы.
Если программа использует несколько модулей, то до передачи
управления
основной
программе
выполняются
секции
инициализации всех модулей в порядке, как они описаны в uses.
Завершающая часть модуля начинается со слова finalization.
Содержит исполняемые операторы (заключаются в операторные
скобки begin end;), которые выполняются после завершения
основной программы. Если программа использует несколько
модулей, имеющих завершающие части, то они выполняются,
начиная с последнего, описанного в uses.
Эти секции размещаются в тексте модуля после раздела
реализации (перед end.).
11

12.

Пример
unit сmpl;
interface
type
complex=record
r, i: real;
end;
ff=file of complex;
procedure addc(x, y: complex; var z1: ff);
Var
z: ff;

implementation
procedure addc(x, y: complex; var z1: ff);
begin

end;

initialization
begin
assignfile(z, ‘z.dat’);
end;
finalization
begin
closefile(z);
end;
end.
12

13.

Пример
unit Unit1;
Interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls; стандартные модули
Type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
Implementation
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
end.
13
English     Русский Rules