Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ВУМИП 2012-07-06.doc
Скачиваний:
66
Добавлен:
13.05.2015
Размер:
9.35 Mб
Скачать

1.5.2. Объявление класса и объекта

Оператор объявления класса имеет вид:

Type<имя класса>=Class[(<имя родительского класса>)]

[Public<поля, методы, свойства и события доступные всем вне класса>]

[Published<аналогиченPublicи изменяемый в инспекторе объекта>]

[Private <поля, методы, свойства и события доступные только в классе>]

[Protected<аналогиченPrivateи дополнительно доступный потомкам>]

[Automated<аналогиченPublicдля потомка классаTAutoObject>]

End; //окончание объявления класса

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

Объявления полей и методов в классе не отличаются от объявлений обычных переменных, процедур или функций.

Объект объявляетсяв разделе переменных оператором вида:

<имя объекта> : <имя класса>;

Доступ к полям, свойствам и методам объекта реализуется указа­нием имени объекта и через точку имени поля, свойства или метода.

Пример задания значения свойствуCaptionобъектаButton1:

Button1.Caption:=’Выход’; //надпись командной кнопки «Выход»

1.5.3. Динамическое создание и удаление объекта

Существуют методы классов, которые уточняются при вызове не именем объекта, а именем класса. Подобные методы не могут обращаться к полям объекта, так как они существуют только в объектах. При объяв­лении и в заголовке таких методов в начале указывается слово Class.

Пример:

Type TUser=Class; I:Integer; Public Class Function Sozd: Integer; End; ...

Class Function TUser.Sozd: Integer; Begin ... End; ...N:=TUser.Sozd;

Для динамического создания объекта используется метод Createв виде: <переменная типа класса>:=<имя класса>.Create;

Для удаления объекта используется метод Freeв виде:

<переменная типа класса>.Free;

Доступ к полям, свойствам и методам динамически созданного объекта реализуется указанием имени переменной типа класса и через точку имени поля, свойства или метода.

Пример:

Type T1=Class(TObject); Procedure Move; End; //объявление класса T1

T2=Class(TObject); Procedure Move; End; //объявление класса T2

VarO1:T1;O2 :T2; //объявление переменных типа классовT1,T2

BeginO1:=T1.Create;O2:=T2.Create; //создание объектом классаT1,T2

O1.Move; ...O2.Move;//вызов методаMoveклассаT1 иT2, соответственно

O1.Free;O2.Free; //удаление объектовO1,O2 классовT1,T2

1.5.4. Динамическое конструирование объектов

Можно объявлять новый тип, являющийся ссылкой на класс:

Type<имя ‑ класса>=Class Of<тип класса>;

Пример: Type TU=Class Of TObject; Var U:TU;

ПеременнаяUможет хранить в себе объект любого класса ‑ потомкаTObject. Если имеется подпрограмма обработки объекта, тип которого будет известен только при вызове этой подпрограммы, то в качестве параметра нужно указать тип класса данного объекта. В нашем примере:

Procedure UserO(O:TU);//заголовок процедуры UserO с параметром O:TU...

UserO(TButton);//вызов процедуры обработки объекта - командной кнопки

UserO(TEdit); //вызов процедуры обработки объекта - текстового поля

Для определения типа объекта используется оператор вида:

<объект> Is<имя типа объекта>. Он возвращает истину, если объект соответствует указанному типу.

Пример:IfOIsTButtonThen...//проверка типа объекта

Если объект описан как ссылка на класс, то для доступа к полям и методам определенного типа класса применяется операция приведения к конкретному типу (<объект> As<класс>).

Пример: (U As TEdit).Text:=’Иванов’; //поле Text класса TEdit