Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прикладное программирование.doc
Скачиваний:
8
Добавлен:
25.12.2018
Размер:
683.01 Кб
Скачать

Var aLine: tLine;

Begin

. . .

ALine:=TLine.Create; // На самом деле ALine всего лишь ссылка

. . .

• Обратимся к полям (атрибутам) экземпляра:

. . .

ALine.X:=10;

ALine.Y:=10;

ALine.Length:=100;

ALine.Angle:=30; // Пока все аналогично полям записи

• Объявим новый класс (класс-потомок) от созданного класса:

Type

TColorLine=Class(TLine)

Color: TColor; // Дополнительное поле - цвет линии

Width: Integer; // Дополнительное поле - ширина линии

Constructor Create; // Новый конструктор

End;

• Объявим экземпляр этого класса и обратимся к нему:

Var aColorLine: tColorLine;

Begin

AColorLine:=TColorLine.Create;

AColorLine.Color:=clRed;

AColorLine.Width:=2;

ACoIorLine.X:=20; // Есть отличие доступа от записи

AColorLine.Y:=20

Таким образом, при объявлении класса TColorLine не требуется указы­вать напрямую поля, наследуемые от класса TLine, как это требовалось бы при использовании вложенных записей.

2. Методы

Метод - это подпрограмма, которая определена как часть класса и вклю­чена в описание этого класса. Набор всех методов определяет операции, ко­торые могут быть выполнены над экземпляром класса. Методы снабжают эк­земпляры класса поведением и определяют протокол (способ вызова), по­средством которого это поведение можно активизировать. Всего существует шесть разновидностей методов объектов:

методы-процедуры, которые аналогичны самостоятельным процеду­рам, за исключением того, что они "присоединены" к тому классу, в котором заданы, и могут быть вызваны лишь через какой-либо активный экземпляр этого класса;

методы-функции, которые возвращают значения и ведут себя так же, как и обычные самостоятельные функции, с той лишь разницей, которая ука­зана для методов-процедур;

классовые процедуры, которые концептуально даже ближе к обыч­ным самостоятельным процедурам, чем методы-процедуры. Для вызова клас­совых процедур не требуется экземпляр класса. Эти процедуры объявляются как часть класса и могут вызываться с использованием ссылки на сам класс (т.е. тип), а не на его экземпляр;

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

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

деструкторы - это также специальные методы объекта, похожие на методы-процедуры. Они точно также вызываются, как и они, т.е. необходимо использовать экземпляр класса. Предназначены деструкторы для уничтоже­ния экземпляров класса.

Примечания:

Все методы описываются в программе дважды:

первоначально в объявлении класса располагается (как правило, в интерфейсе мо­дуля) объявление метода, которое служит для того, чтобы сообщить компилятору о намерении создать метод. Это подобно объявлению Forward для обычных процедур и функций;

тело метода размещается вне объявления класса - в разделе реализации (Implementation) того же модуля, либо в программе или в библиотеке, до основного блока Begin End.

Внутри одного класса можно объявить столько методов, сколько

требуется.

Внутри методов можно обращаться к методам предков, используя

конструкцию:

[Self.]<имя метода>[(<параметры>)];

При объявлении методы разных видов могут быть перемешаны меж­ду собой.

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

За именем метода может следовать заключенный в скобки необяза­тельный список параметров, синтаксис написания которого аналогичен

обычным подпрограммам.

Базовый класс TObject включает до 25 (Delphi 5) различных методов:

конструктор, деструктор, метод Free, 9 классовых методов и не имеет по­лей данных и свойств.

По умолчанию все методы являются статическими. При объявлении метода может быть использовано несколько команд (слов-директив), кон­кретизирующих вариант вызова метода: Class, Virtual, Dynamic, Abstract, Override, Overload, Reintroduce, Message.

» В Delphi 4.0 в класс TObject введены два виртуальных метода AfterConstruction и BeforeDestruction, которые можно использовать тогда, когда конструктора и деструктора недостаточно.