Поддержка перегружаемых процедур и функций позволяет сократить количество уникальных имен, что, несомненно, упрощает труд программиста. Как правило, такие функции применяют при выполнении одинаковых действий над разными типами данных.
function Divide(X, Y: Real): Real; overload; begin
Result := X/Y;
end;
function Divide(X, Y: Integer): Integer; overload; begin
Result := X div Y; end;
Заметьте, что в приведенном примере имена функций одинаковы. Однако одноименные функции Divide работают с различными типами параметров. Для того чтобы Delphi распознала процедуру или функцию как перегружаемую, используют ключевое слово overload.
Удобство при работе с перегружаемыми функциями заключается в том, что компилятор самостоятельно выясняет, какой тип данных использует вызов, и подставляет адрес нужной функции:
var A : integer; B : real;
A:= Divide(10, 2); // тип integer
B:= Divide(10.54, 2.64); // тип real
Структура программного модуля стандартного проекта Delphi
Создаваемый по умолчанию программный модуль (unit) состоит из двух разделов: интерфейса (interface) и реализации (implementation) (рис. 2.1).
Раздел интерфейса начинается ключевым словом interface и продолжается до implementation. Он отвечает за взаимосвязь модуля с внешним миром. Все,
что размещено в этом разделе, будет доступно другим программам и модулям. Не размещайте здесь ничего лишнего, в этике взаимоотношений модулей Delphi это считается признаком дурного тона. Ключевое слово uses предваряет список модулей, с которыми взаимодействует данный программный модуль. Delphi автоматически заполняет его составными элементами:
• Windows - объявление типов данных и констант, используемых Windows, взаимодействие с ключевыми функциями Windows.
• Messages - числовые константы и типы данных, применяемые в сообщениях Windows.
• SysUtils - набор системных утилит.
• Classes - составные части компонентов Delphi.
• Graphics - графические элементы.
• Cont rols - фундамент для построения основных элементов управления.
• Fo rms - описание формы и приложения.
• Dialogs - стандартные диалоговые окна Windows.
Вы вправе дополнить программный модуль еще двумя разделами: инициализации (Initialization^ и завершения (finalizationj. Их задачи сводятся соответственно к предстартовой подготовке модуля к работе и к завершению его работы.
Интерфейс может включать один или несколько блоков (а в некоторых случаях и ни одного) объявлений типов. При создании нового проекта по умол-
чанию объявляется один единственный класс TForml. Строка TFormI = class (TForm) извещает нас о том, что объект TForml наследует все свойства и возможности объекта TForm. Секции private и public предназначены для объявления полей данных и методов объекта TForml. Поля и методы, записанные в секции private, являются частными, т. е. доступными только самому объекту. Информация, внесенная в секцию public, может использоваться другими модулями и программами. За объявлением типов следует область глобальных переменных (ключевое слово var).
Раздел реализации (в противовес интерфейсу проекта) - частная собственность модуля. Он начинается ключевым словом implementation и завершается словом end с точкой в конце. При создании нового проекта в разделе реализации размещена одна-единственная строка {$R *.DFM}. Это директива компилятора по подключению к проекту файла с ресурсом формы.