Смекни!
smekni.com

Основы программирования в среде Delphi (стр. 1 из 2)

Оглавление

Введение. 2

1. Система программирования Delphi 3

1.1 Состав проекта. 3

1.2 Описание класса........................................................................................ 4

2. Класс VCL. 10

2.1 Компоненты.. 11

2.2 Основы создания компонентов. 12

Заключение. 15

Приложение А. Первый шаг создания нового компонента. 17

Приложение Б. Логическая структура сети университета. 18

Приложение В. Система ДОТ «Platonus». 19


Введение

Цель производственной практики: закрепление теоретических знаний, полученных в университете, развитие необходимых практических умений и навыков в соответствии с темой дипломной работы «Создание нового компонента в визуальной среде разработки приложений».

Для решения поставленной цели были определены следующие задачи:

Углубленное изучение систему программирования Delphi;

изучение и сбор необходимых материалов для выполнения дипломной работы;

приобретение практических навыков в работе эксплуатации локальной вычислительной сети тьюторской службы университета

выполнение работы по обслуживанию компьютерной техники и специальных программ.

Дата прохождения практики: с 25.10.2010 по 20.11.2010 г.

Место прохождения практики: отдел инженерной службы Казахстанско-Российского университета.


1. Система программирования Delphi

1.1 Состав проекта

Delphi – это система визуального объектно-ориентированного программирования, в которой в качестве языка программирования используется язык Object Pascal. Язык Object Pascal – строго типизированный объектно-ориентированный язык, в основе которого лежит Turbo Pascal.

В состав Delphi входит библиотека VCL (Visual Component Library), содержащая компоненты для построения интерфейса приложения, а также структуры для хранения и обработки данных. Библиотека представляет собой иерархию объектов, имеющую общего предка предка – TObject.

Проектируемое с помощью Delphi приложение хранится в нескольких файлах. Рассмотрим основные файлы:

.dpr – файл проекта. Это главная программа, в которой содержится код инициализации, завершения и запускается цикл обработки событий. Файл содержит ссылки на все формы и модули, входящие в состав проекта.

.pas – исходный код модуля и формы. Большинство модулей связаны с формами и содержат тексты обработчиков событий элементов, размещенных на формах.

.dfm – файл формы. Содержит описание внешнего вида формы и расположенных на ней элементов.

.cfg,.dsk,.dof – файлы настроек компилятора, среды и проекта.

.res – файл ресурсов (создается автоматически). Включает значок программы, номер версии и т.д.

.exe – исполняемый файл созданного приложения.

.~dpr,.~pas,.~dfm – резервные файлы проекта, модуля и формы. Создаются, если включен режим резервного копирования.


1.2 Описание класса

Объект, называемый в Delphi классом, может кроме разделов private и public иметь разделы protected, published и automated.

Элементы класса, расположенные после ключевого слова protected, называются защищенными. Они доступны внутри модуля, содержащего описание класса, и внутри его потомков.

В разделе published содержатся элементы, отображаемые в инспекторе объектов. Для них установлен тот же тип доступа, что и для элементов public. Этот раздел используется только при разработке нестандартных компонентов. Раздел automated содержит элементы, которые добавляются к интерфейсу объектов, использующих OLE. Интерфейс OLE (Object Linking and Embedding — связывание и внедрение объектов) поддерживается множеством различных программ и используется для помещения документа, созданного в одной программе, в другую программу. Например, можно вставить документ Microsoft Word в Microsoft Excel. Таким образом, OLE - это технология связи программ, позволяющая совместно использовать данные.

В потомках объекта доступность унаследованных элементов можно изменять.

Основная особенность объектов в Delphi состоит в том, что они по умолчанию являются динамическими, но операция разыменовывания для доступа к ним не используется. Если предок класса не указан, им считается TObject.

Рекомендуется для конструктора класса использовать имя Create, для деструктора – Destroy и вызывать из них соответствующие методы предка с помощью ключевого слова inherited. Вызов конструктора предка выполняется перед первым исполняемым оператором конструктора класса, а деструктора – после последнего. Деструктор объявлен в TObject как виртуальный, поэтому в любом потомке требуется объявлять его с ключевым словом override, которое используется в Delphi для переопределения виртуальных методов.

Рассмотрим пример, в котором объявляется класс «целое число».

type

TNumber = class

n:integer;

constructor Create(n_:integer);

end;

constructor TNumber.Create(n_:integer);

begin

inherited Create;

n:=n_;

end;

Переменная класса TNumber создается и удаляется так:

var

num:TNumber;

num:=TNumber.Create(10);

Label1.Caption:=IntToStr(num.n);

num.Destroy;

Здесь описан указатель на класс TNumber. Конструктор Create выделяет место в динамической памяти, достаточное для размещения объекта, и инициализирует его. В предпоследней строке значение поля num преобразуется в строку и выводится на форму через метку (элемент управления типа TLabel). Обратите внимание на то, что операция разыменовывания для доступа к объекту не используется.

Если конструктор или деструктор в классе задан, оба они наследуются от предка, а в конечном счете – от TObject, в соответствующих методах которого задается размещение объекта в памяти и ее освобождение.

Если требуется переопределить виртуальный метод, он описывается с ключевым словом override, а не virtual. Если же указать в потомке слово virtual, это будет воспринято компилятором как начало новой иерархии виртуальных методов.

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

В классах, предназначенных для создания не объектов, а потомков, разрешается определять методы с ключевым словом abstract. Для таких методов реализация задается только в потомках класса. Класс, содержащий хотя бы один абстрактный метод, называется абстрактным. Создавать экземпляры объектов такого класса запрещается, а в потомках, предназначенных для создания объектов, все абстрактные методы надо обязательно переопределить. Абстрактные методы предназначены для задания общего интерфейса иерархии.

При переопределении обычных методов в производном классе непосредственный доступ к одноименному методу предка невозможен. Чтобы обойти это ограничение, при описании метода потомка можно задать ключевое слово overload (перегруженный). У перегруженных методов должен различаться список параметров, поскольку именно по типам аргументов компилятор выбирает, какой из одноименных методов вызвать. Перегруженные методы не могут объявляться в одном и том же классе – только в предке и потомке, например:

type

a = class

procedure max(a,b:integer):overload;

end;

b = class(a)

procedure max(a:real; b:integer; s:char):overload;

end;

var

x:b;

x.max(20,3); {вызывается метод из класса a}

x.max(0.1,10,’u’); {вызывается метод из класса b}

Виртуальные методы также можно перегружать, но при этом становится невозможным доступ к методу предка и компилятор выдает предупреждение. Чтобы подтвердить компилятору свои намерения, можно использовать ключевое слово reintroduce. Рассмотрим варианты переопределения виртуальных методов на примере:

type

a = class

procedure p1; virtual;

procedure p2; virtual;

procedure p3; virtual;

procedure p4; virtual;

procedure p5; virtual;

end;

b = class(a)

procedure p1;

procedure p1; reintroduce;

procedure p1; override;

procedure p1; virtual;

procedure p1; reintroduce; virtual;

end;

var

x:a;

x:=b.create;

x.p1; x.p2; x.p3; x.p4; x.p5;

В производном классе b процедуре р1 переопределяет виртуальный метод на простой (выдается предупреждение о том, что доступ к соответствующему методу предка закрыт), процедура р2 делает то же самое, но предупреждение не выдается, процедура р3 переопределяет виртуальный метод традиционным способом (для обеспечения полиморфизма), р4 начинает новое семейство виртуальных методов (доступ к методу предка закрывается, выдается предупреждение), и, наконец, процедура р5 делает то же самое, что и р4, но предупреждение не выдается.

При вызове этих методов для объекта производного класса через указатель на базовый класс метод потомка вызывается только в случае x.p3. Свойства (доступ к которым обеспечивается через вкладку properties инспектора объектов) служат для организации доступа к полям класса. Как правило, свойство связано с полем класса и определяет методы его получения и установки. Упрощенно определение свойства выглядит так:

property имя: тип

[read имя_метода_или_поля] {метод получения}

[write имя_метода_или_поля] {метод устанвки}

Например:

type

a = class

private FSize: word;

function GetSize:word;

procedure SetSize(x_:word);

property Size:word read GetSize write SetSize;

end;

Здесь свойство Size определяет интерфейс доступа к полю FSize. Если установка или получение значения поля запрещены, соответствующие части определения опускают. Метод записи обычно содержит действия по проверке допустимости устанавливаемого значения, метод чтения может содержать, например, поддержку счетчика обращений к полю. Если никаких дополнительных действий не требуется, после read или write вместо имени метода может указываться просто имя поля.

В программе свойство выглядит как поле класса, например:

var

x:a;

x:=100;

При обращении к свойству автоматически вызываются указанные в нем методы чтения и установки.

Рассмотренные свойства являются простыми. Кроме простых можно определять процедурные свойства, свойства-массивы и индексируемые свойства.


2. Класс VCL

Использование стандартных объектов при создании приложений не только уменьшает сроки разработки, но и снижает количество ошибок. Отрицательным же следствием их применения является увеличение размера программы. Библиотека VCL содержит несколько сотен классов, образующих древовидную иерархию. Рассмотрим фрагмент такой иерархии: TObject – базовый класс иерархии. В нем нет полей, но заданы методы, определяющие основу поведения любого объекта, – создание, уничтожение объекта, обработку сообщений. Все классы, как стандартные, так и создаваемые программистом, прямо или косвенно наследуются от TObject. Их можно разделить на визуальные и невизуаьные. Визуальные классы предназначены для организации взаимодействия с пользователем, невизуальные – для хранения и обработки данных.