Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Существуют методы классов, которые уточняются при вызове не именем объекта, а именем класса. Подобные методы не могут обращаться к полям объекта, так как они существуют только в объектах. При объяв­лении и в заголовке таких методов в начале указывается слово 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

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

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




Поделиться с друзьями:


Дата добавления: 2014-12-08; Просмотров: 582; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.006 сек.