
- •Оглавление
- •Виды данных
- •Программирование линейных алгоритмов
- •Программирование разветвляющихся алгоритмов
- •Программирование циклических алгоритмов
- •Описание и использование типа массив
- •Ввод и вывод массивов
- •Описание и использование данных строкового типа
- •Операции над строками
- •Процедуры и функции для работы со строками
- •Описание и использование процедур и функций
- •Функции
- •Формальные и фактические параметры
- •Описание и использование типа запись
- •Описание и использование множеств
- •Файловый тип данных. Описание и использование типизированных файлов
- •Описание и использование текстовых файлов
- •Модуль пользователя
- •Объектно-ориентированное программирование. Классы. Основные понятия
- •Основные понятия
- •Инкапсуляция
- •Наследование
- •Полиморфизм
- •Составляющие класса Поля
- •Свойства
- •Программные файлы. Файл проекта. Файл формы
- •Система программирования Delphi
- •Основные окна Delphi
- •Литература
Свойства
Свойства – это поля данных, которые влияют на поведение объекта. Они служат для описания объекта и отличаются от обычных полей тем, что присвоение им значений связано с вызовом методов.
Свойства объявляются с помощью слов property, read, write. Свойство связано с некоторым полем и определяет те методы класса, которые должны использоваться при записи в это поле или при чтении из него.
Например:
type TaClass= class
field:integer;
function GetAProperty:integer;
procedure SetAProperty (value:integer);
property AProperty: integer read GetAProperty write SetAProperty;
end;
var AClass:TaClass; value:integer;
Доступ к значению свойства AProperty осуществляется через вызовы методов GetAProperty и SetAProperty. Однако в обращении к этим методам в явном виде нет необходимости, достаточно написать:
AClass.AProperty:=0;
value:= AClass.AProperty;
И компилятор оттранслирует эти операторы в вызовы методов. Таким образом, внешне свойство выглядит в точности как обычное поле, но за всяким обращением к нему могут стоять нужные вам действия.
begin
AClass:=TaClass.Create; {обращение к конструктору перед обращением к полю или свойству}
AClass. AProperty:=0; {подключается метод SetAProperty} ….
value:= AClass. AProperty; {подключается метод GetAProperty} …
AClass.Destroy; {удаление объекта}
end;
Если нет необходимости в специальных действиях при чтении или записи свойства, вместо имени соответствующего метода можно указать имя поля:
type TaClass= class
field:integer;
procedure SetAProperty (value:integer);
property AProperty: integer read field write SetAProperty;
end;
Если необходимо, чтобы свойство было доступно только для чтения или только для записи, следует опустить соответственно часть write или read.
type TAnObject=class(TObject)
function GetAProperty:integer;
property AProperty: integer read GetAProperty;
end;
Свойство может и не связываться с полем. Фактически оно описывает один или два метода, которые осуществляют некоторые действия над данными того же типа, что и свойство.
Программные файлы. Файл проекта. Файл формы
Файл проекта является основным и представляет собой собственно программу. Он содержит код главной программы, с помощью которого создается объект главной формы программы, а также обеспечивается связь программы с Windows. Файл проекта имеет расширение .dpr. Для приложения, включающего в свой состав одну форму, файл проекта имеет вид:
program Project1;
uses
Forms,
Unit1 in ‘Unit1.pas’ {Form1};
{$R *.RES}
begin
Аpplication.Initialize;
Аpplication.CreateForm(TForm1,Form1);
Аpplication.Run;
end.
В разделе uses указывается имя подключаемого модуля Forms, который является обязательным для всех приложений, имеющих формы в своем составе. В разделе uses перечисляются подключаемые модули всех форм проекта, - первоначально это модуль Unit1 формы Form1.
Директива $R подключает к проекту файл ресурсов, который по умолчанию имеет имя, совпадающее с именем файла проекта. Поэтому вместо имени файла ресурса указан символ *. Кроме этого файла, разработчик может подключить к проекту и другие ресурсы, самостоятельно добавив директивы $R и указав в них соответствующие имена файлов ресурсов.
Программа проекта содержит три оператора, выполняющие инициализацию приложения, создание формы Form1 и запуск приложения. Приложение в целом описывается классом TАpplication. При каждом запуске приложения система Delphi автоматически создает объект типа TАpplication с именем Аpplication. По своей сути объект Аpplication является окном Windows. Объект Аpplication недоступен при конструировании приложений, но информация о нем присутствует в исходном файле проекта (.dpr).
В начале работы над новым приложением к файлу проекта автоматически добавляются вызовы трех методов: Initialize, CreateForm, Run. Процедура Initialize инициализирует приложение в целом, при этом выполняются операторы раздела initialization всех модулей приложения. Процедура CreateForm(TForm1,Form1) создает форму, тип которой TForm1, и присваивает ее переменной Form1. Владельцем созданной формы является объект Аpplication. Этот метод вызывается автоматически для каждой формы, принадлежащей приложению. Процедура Run запускает приложение.
Файл формы
Для каждой формы в составе проекта автоматически создаются файл описания (.dfm) и файл модуля (.pas). Файл описания формы содержит характеристики формы и ее компонентов. Разработчик обычно самостоятельно управляет этим файлом, используя окно Конструктора формы и Инспектора объектов. При конструировании формы в файл описания автоматически вносятся соответствующие изменения. Файл модуля формы содержит описание класса формы. Для пустой формы, добавляемой к проекту по умолчанию, файл модуля содержит следующий код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes,Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1=class(TForm)
private { private declarations}
public { public declarations}
end;
var Form1:TForm1;
implementation
{$R *. DFM}
end.
Файл модуля формы создается Delphi автоматически при добавлении новой формы. По умолчанию к проекту добавляется новая форма типа TForm, не содержащая компонентов.
В разделе interface модуля формы содержится описание класса формы, а в разделе inplementation – подключение к модулю директивой $R описания соответствующей формы. При размещении на форме компонентов, а также при создании обработчиков событий в модуль формы вносятся соответствующие изменения. При этом часть изменений автоматически вносит Delphi, а часть – разработчик. Тексты модулей форм отображаются в окне Редактора кода и редактируются с его помощью. Программа может иметь сколько угодно форм, каждая из которых может решать ту или иную задачу и появляется на экране по мере надобности.