КАТЕГОРИИ: Архитектура-(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; Просмотров: 612; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |