Similar presentations:
19_Модули
1. Модули
12.
Когда программы стали настолько большими, что ких разработке стали привлекаться коллективы
программистов, появились модули.
Сначала большие программы просто делились на
части.
Модуль – автономно компилируемая программная
единица, включающая в себя различные компоненты
раздела описаний (типы, константы, переменные,
процедуры и функции), а также исполняемые операторы.
Компоненты раздела описаний (типы, константы,
переменные, процедуры и функции) – ресурсы модуля,
которые могут использоваться другими модулями.
Каждый модуль хранится в отдельном сегменте памяти.
Количество одновременно используемых модулей
ограничивается объемом оперативной памяти.
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
programming