Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Высокоуровневые методы информатики и программир...docx
Скачиваний:
25
Добавлен:
12.11.2019
Размер:
6.53 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

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

Begin O1:=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 <имя типа объекта>. Он возвращает истину, если объект соответствует указанному типу.

Пример: If O Is TButton Then ...//проверка типа объекта

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

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