Читаем Технологии программирования полностью

Программы на языке Object Pascal состоят из нескольких файлов: файла проекта (Delphi Project) с расширением *.dpr, одного или нескольких файлов модулей (Unit) с расширением *.pas и файлов дизайнера экранных форм с расширением *.dfm.

Файл проекта содержит текст основной программы Program, с которой начинается выполнение всей программы. Тексты вызываемых подпрограмм и используемых объектов находятся в файлах модулей.

Рассмотрим организацию исходного текста модуля:

unit MyUnit1;

interface

uses

Unit1, Unit2, Unit3;

const

Pi = 3.14;

type

MyType =. .;

var

var1: MyType;

procedure Proc1;

function Func: MyType;

implementation

uses

Unit4, Unit5, Unit6;

const

…;

type

…;

var

…;

procedure Proc1;

begin

{ Операторы}

end;

function Func: MyType;

begin

{Операторы}

end;

initialization

{Операторы}

finalization

{Операторы}

end.

Модуль начинается с описательного оператора заголовка модуля:

unit MyUnit1;

Имена файлов MyUnit1.pas, MyUnit1.dfm должны совпадать с именем, описанным в заголовке модуля MyUnit1. Наличие файла MyUnit1.dfm не является обязательным.

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

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

В необязательном разделе initialization размещаются операторы, которые выполняются сразу после запуска программы.

Раздел finalization не является обязательным, более того, он может присутствовать только в том случае, если в модуле присутствовала секция initialization. В секции размещаются операторы, которые выполняются непосредственно перед завершением программы.

2. ОБЪЕКТЫ И КЛАССЫ В ЯЗЫКЕ OBJECT PASCAL

В обычном языке Pascal существует тип-запись:

type

TmyRecord = record

MyField1: String;

MyField2: Integer;

end;

Тип-запись позволяет описывать структурированные переменные, содержащие несколько значений как одного, так и разных типов. В приведенном примере запись TmyRecord содержит поля MyField1 и MyField2, которые соответственно имеют типы String и Integer.

Тип-класс в Object Pascal по виду близок к записи, но отличается от записи возможностью наследования от других классов, а также возможностью описания методов класса. Классом в Object Pascal называется особый тип записи, который может иметь в своем составе поля, методы и свойства. Такой тип также будем называть объектным типом:

type

TMyObject = class(TObject)

MyField: Integer;

Procedure MyMethod1 (X: Real; var Y: Real);

function MyMethod2: Integer;

end;

В примере описан класс TMyObject, который наследуется от класса Tobject. Понятие "наследования классов" и понятие "свойства" будут подробно рассмотрены далее. Пока можно определить понятие свойства как поле, которое доступно не напрямую, а через посылку сообщений особым методам.

Перейти на страницу:

Похожие книги