Компиляция и выполнение проекта. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Компиляция и выполнение проекта.



Проект может быть откомпилирован в файл EXE или DLL – динамически загружаемую библиотеку. Компиляция выполняется по команде Project/Compile или <Ctrl>+<F9>. При компиляции выполняются действия:

– компилируются те файлы, которые изменялись, они сохраняются в файлах с расширением DCU;

– перекомпилируются все другие файлы, которые через USES обращались к измененным файлам;

– перекомпилируются файлы, использующие измененные объектные файлы obj, подключаемые файлы inc;

– после перекомпиляции всех модулей проекта компилируется файл проекта и создается исполняемый файл приложения.

Кроме компиляции модулей происходит компоновка проекта Project/Build – компилируются заново все файлы проекта.

Выполнение проекта происходит по команде Run/Run или <F9>.

 

Реализация принципов объектно-ориентированного

Программирования в Delphi

 

Принципы объектно-ориентированного программирования реализуются в Delphi с помощью классов.

Классами в Delphi называются специальные типы, которые содержат поля, методы и свойства. Как и любой другой тип, класс служит лишь образцом для создания конкретных экземпляров реализации, которые называются объектами.

Классы — это особое «изобретение» программистов для упрощения разработки сложных программ и улучшения их качества. В основе классов лежат три фундаментальных принципа, которые называются инкапсуляция, наследование и поли-морфизм.

Инкапсуляция.

Класс представляет собой единство трех сущностей – полей, методов и свойств, Объединение этих сущностей в единое целое и называется инкапсуляцией. Инкапсуляция позволяет во многом изолировать класс от остальных частей програмы, сделать его «самодостаточным» для решения конкретной задачи. В результате класс всегда несет в себе некоторую функциональность. Например, класс TForm содержит (инкапсулирует в себе) все необходимое для создания окна Windows-программы, класс TMemo представляет собой полнофункциональный многострочный текстовый редактор, класс TTimer обеспечивает работу программы с таймером и т. д.

Инкапсуляция является мощным средством обмена готовыми к работе программными заготовками. Библиотека классов Delphi – это, фактически, набор «деталей», созданных программистами Borland для построения программ.

 

Наследование.

Любой класс может быть порожден от другого класса. Для этого при его объявленииуказывается имя класса-родителя:

TChildClass = class (TParentClass)

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

Все классы Delphi порождены от единственного родителя – класса TObject. Этот класс не имеет полей и свойств, но включает в себя методы самого общего значения, обеспечивающие весь жизненный цикл любых объектов – от создания до уничтожения. Программист не может создать класс, который не был бы дочерним классом TObject. Следующие два объявления идентичны:

TaClass = class (TObject)

TaClass = class

Принцип наследования приводит к созданию ветвящегося дерева классов, постепенно разрастающегося при перемещении от класса TObject к его потомкам, Каждый потомок дополняет возможности своего родителя новыми и передает их своим потомкам. В отличие от С++, дочерний класс не может иметь два и более родительских классов, то есть в Delphi запрещено множественное наследование.

Полиморфизм.

Полиморфизм — это свойство классов решать схожие по смыслу проблемы разными способами. В рамках Delphi поведенческие свойства класса определяются набором входящих в него методов. Изменяя алгоритм того или иного метода в потомках класса, программист может придавать этим потомкам отсутствующие у родителя специфические свойства. Для изменения метода необходимо перекрытьего в потомке, то есть объявить в потомке одноименный метод и реализовать в нем нужные действия. В результате в объекте-родителе и объекте-потомке будут действовать два одноименных метода, имеющие разную алгоритмическую основу и, следовательно, придающие объектам разные свойства. Это и называется полиморфизмом объектов.

Составляющие класса

Поля.

Полями называются инкапсулированные в классе данные. Поля могут быть любого типа, в том числе – классами, например:

Type

TMyClass = class

aIntField: Integer;

aStrField: String;

aObjField: TObject;

end;

Каждый объект получает уникальный набор полей, но общий для всех объектов данного класса набор методов и свойств. Фундаментальный принцип инкапсуляции требует обращаться к полям только с помощью методов и свойств класса, однако в Delphi разрешается обращаться к полям и напрямую:

Type

TMyClass = class

FIntField: Integer;

FStrField: String;

end;

Var

aObject: TMyClass;

Begin

aObject.FIntField:= 0;

aObject.FStrField:= ‘Строка символов’;

end;

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

Методы

Инкапсулированные в классе процедуры и функции называются методами. Они объявляются так же, как и обычные подпрограммы:

Type

TMyClass = class

function MyFunc(aPar: Integer): Integer;

procedure MyProc;

end;

Доcтуп к методам класса, как и к его полям, возможен с помощью составных имен

Var

aObject: TMyClass;

Begin

aObject.MyProc;

end;

Как уже говорилось, методы класса могут перекрываться в потомках. Например:

Type

TParentClass = class

procedure DoWork;

end;

TChildClass = class (TParentClass)

procedure DoWork;

end;

Потомки обоих классов могут выполнять сходную по названию процедуру DoWork, но, в общем случае, будут это делать по-разному. Такое перекрытие методов называется статическим, так как реализуется компилятором.

Свойства

Свойства – это специальный механизм классов, регулирующий доступ к полям. Свойства объявляются с помощью зарезервированных слов property, read и write (слова read и write считаются зарезервированными только в контексте объявления свойства). Обычно свойство связано с некоторым полем и указывает те методы класса, которые должны использоваться при записи в это поле или при чтении из него. Например:

Type

TaClass = class

IntField: Integer;

function GetField: Integer;

procedure SetField(Value: Integer);

property IntegerValue: Integer read GetField

write SetField;

end;

В контексте программы свойство ведет себя как обычное поле. Например, можно написать такие операторы:

Var

aClass: TaClass;

Value: Integer;

Begin

aClass:= TaClass.Create; { Обязательное обращение

к конструктору перед обращением к полю

или свойству!}

aClass.IntegerValue:= 0;

Value:= aClass.IntegerValue;

FreeAndNil(aClass); // Удаление ненужного объекта

end;

Более того, возможен и такой оператор присваивания:

aClass.IntField:= NewValue;

Разница между этим оператором и оператором, показанным ниже, заключается в том, что при обращении к свойству автоматически подключается метод SetField. в котором могут реализовываться специфичные действия:

aClass.IntegerValue:= NewValue;

Еще один пример:

Label1.Caption:= 'Строка';

Свойство Caption компонента Label1 вызывает метод SetText, который не только запоминает строку символов во внутренней переменной, но и осуществляет прорисовку метки с новым текстом.

 

Форма и ее свойства

 

Форма – важнейший визуальный компонент, видимое окно приложения в Delphi. На форме размещаются компоненты Delphi. Форму называют контейнером.

Форма представлена компонентом Form класса TForm.

Создание приложения начинается с автоматического создания пустой формы Form1.

Любое приложение имеет несколько форм, одна из которых является главной и отображается при запуске программы, и при закрытии которой закрывается приложение.

Форма может быть модальной и немодальной.

Модальная требует своего закрытия перед обращением к другой форме приложения.

Немодальная позволяет переключаться на другую форму без своего закрытия.

Характеристики формы

Положение и размеры формы (в пикселях) определяются четырьмя свойствами:

property Height: Integer;

property Left: Integer;

property Top: Integer;

property Width: Integer;

Height и Width определяют высоту и ширину формы соответственно. Left и Top определяют положение левой верхней кромки формы на экране.

Замечание: данные свойства есть у всех видимых компонентов, но Left и Top, в отличие от формы, определяются относительно пространства родительского компонента (т.е. компонента, в котором размещен рассматриваемый элемент).

Видимость формы задается с помощью свойства Visible.

property Visible: Boolean;

Если Visible имеет значение true, то форма видна на экране, в противном случае – не видна.

Замечание: данное свойство есть почти у всех видимых компонентов.

Видимостью формы также можно управлять с помощью следующих методов:

procedure Hide;

procedure Show;

function ShowModal: Integer;

Hide – скрывает форму, Visible становится равным false.

Show – отображает форму в немодальном режиме, Visible устанавливается в true, форма переводится на передний план, передает ее фокус ввода;

ShowModal – отображает форму в модальном режиме, Visible устанавливается в true, форма переводится на передний план, передает ее фокус ввода, который может быть передан другой форме только в случае закрытия текущей.

Пример. Процедура показывает Form2, Form3 при нажатии на кнопку BtnShowForms в Form1:

procedure TForm1.BtnShowFormsClick(Sender: TObject);

Begin

Form2.Visible:= true;

Form3.Show;

end;

 

Пример. Процедура скрывает Form2, Form3 при нажатии на кнопку BtnHideForms в Form1:

procedure TForm1.btnHideFormsClick(Sender:TObject);

Begin

Form2.Visible:=False;

Form3.Hide;

end;

 

При создании и использовании формы происходят события:

OnCreate – событие, происходящее при создании формы;

OnShow – событие, происходящее при показе формы

OnResize – событие, происходящие при изменении размера формы;

OnActivate – событие, происходящее получении формой фокуса ввода;

OnPaint – событие, происходящее при перерисовке формы.

Для закрытия формы используется метод Close, который делает форму невидимой, но не разрушает экземпляр. Поэтому форма может снова появиться на экране при использовании методов Show, ShowModal.

procedure Close;

Уничтожение формы происходит по методу Free.

procedure Free;

Необходимость уничтожения возникает в случае экономии ОП, когда можно уничтожить, например, форму – заставку, занимающую много памяти.

procedure TForm3.btnDestroyClick (Sender:TObject);

Begin

Form3.Free;

end;

 

Свойства формы.

Заголовок формы (пишется в левой верхней части окна) задается с помощью свойства Caption.

property Caption: TCaption;

Цвет формы задается с помощью свойства Color.

property Color: TColor;

Цвет можно выбрать из списка в инспекторе объектов (или присвоить свойству соответствующее значение в коде программы). Константа значения цвета имеет вид clXX* где XX* - соответствующее название цвета. Например, clBlue или clRed.

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

property Cursor: TCursor;

Вид курсора можно выбрать из списка в инспекторе объектов (или присвоить свойству соответствующее значение в коде программы). Константа значения курсора имеет вид crXX* где XX* - соответствующее название курсора. Например, crArrow (обычный курсор-стрелка) или crHourGlass (песочные часы).

Свойство BorderIcons (тип TBorderIcons) определяет возможность изображения 4 – х кнопок.

property BorderIcons: TBorderIcons;

С помощью данного свойства можно скрывать или показывать следующие кнопки:

biSystemMenu –кнопка системного меню,

biMinimize – кнопка свертывания,

biMaximize – кнопка восстановления,

biHelp – кнопка справки для вызова контекстно-ориентированной справки.

Если отсутствует кнопка системного меню, то ни одна кнопка не отображается.

Если есть кнопки Minimize/Maximize, то кнопка Help не отображается.

Свойства Hint и ShowHint позволяют отобразить всплывающую подсказку.

property Hint: string;

property ShowHint: Boolean;

В свойстве Hint набирают подсказку, при этом, чтобы подсказка выводилась при остановке мыши, необходимо свойству ShowHint присвоить значение True.

Свойства ClientWidth, ClientHeight задают ширину и высоту клиентской части формы в пикселях.

property ClientHeight: Integer;

property ClientWidth: Integer;

В клиентской части отображаются компоненты формы, в неклиентской – рамка, заголовок, строка главного меню.

Свойство Icon определяет пиктограмму в левой области заголовка формы.

property Icon: TIcon;

Если пиктограмма не задана, то используется пиктограмма из свойства Icon объекта Application.

Свойство Position задаёт размещение и размер формы.

property Position: TPosition;

Может принимать следующие значения:

poDesigned – определены при конструировании формы значениями Left, Top, Width, Height;

poScreenCenter – расположение в центре экрана;

poDefault – Windows автоматически сама определяет начальную позицию и размеры формы;

poDesktopCenter – расположение в середине рабочего стола;

poMainFormCenter – расположение в центре главной формы.

Свойство WindowState определяет состояние формы.

property WindowState: TWindowState;

Может принимать следующие значения:

wsNormal – обычное (по умолчанию),

wsMinimized – минимизация,

wsMaximized – максимизация.

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

property AutoScroll: Boolean;

На рис. 10 приведен пример формы с указнием некоторых важных ее свойств.

 

 

 
 

 


 

 

Рис.10. Пустая форма с указанием некоторых важных свойств

 



Поделиться:


Последнее изменение этой страницы: 2017-02-05; просмотров: 290; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.151.141 (0.099 с.)