Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Использование виртуальных конструкторов и ссылок на класс. Контроль принадлежности объекта классу.Содержание книги
Поиск на нашем сайте
Конструкторы и деструкторы Конструктор — это метод, который вызывается только один раз в момент создания экземпляра объекта соответствующего класса. Конструктор считается методом класса (class procedure), что позволяет вызывать его, указывая не только имя объекта, но и имя класса. Для конструктора выделено специальное ключевое слово constructor. constructor CreateMyObject(MySize: Integer); Конструкторов у объекта может быть сколько угодно, однако создаваться объект может с помощью только одного из них. ') ПОДСКАЗКА В базовом классе TObjecl имеется готовый конструктор Create, который и рекомендуется использовать, если нет необходимости в конструкторах с особыми возможностями. В любом случае в реали- зации собственного конструктора желательно вызывать базовый конструктор Creole с помощью директивы inherited. Деструктор — это метод, который вызывается только один раз в момент уничтоже- ния экземпляра объекта соответствующего класса. Класс TObject имеет стандартный деструктор Destroy, Разрешается создавать неограниченное число деструкторов с помощью ключевого слова destructor: destructor MyDestructor; ПОДСКАЗКА Рекомендуется создавать в классе только один деструктор, а в его реализации вызывать деструктор Destroy базового класса TObject с помощью директивы inherited. Тип ≪класс≫ В Паскале имеется возможность объявлять новый тип, являющийся ссылкой на класс: type имя-класса - class of тип-класса; Например: type TMetaClass = class of TObject; Классы и объекты 95 Переменная, описанная как var MetaClass: TMetaClass; может хранить в себе объект любого класса, унаследованного oTTObject. Это позволяет записывать в подобные переменные объекты произвольных классов во время выпол- нения программы, не зная конкретных типов этих объектов. Например, если имеется стандартная подпрограмма обработки объектов, тип которых будет известен только в процессе работы приложения, то в качестве типа соответствующего параметра надо ука- зать тип, представляющий собой ссылку на класс. Тогда в момент вызова подпрограммы можно задавать объект, имеющий произвольный тип, унаследованный от TObject procedure UseObject(Obj: TMetaClass); UseObjectl TButton); UseObject(TEdit); Классы TButton и TEdit — стандартные классы Delphi, описывающие компоненты ≪кнопка≫- и ≪текстовое поле≫. Проверка типа объекта Так как в Паскале допускается применять объекты, тип которых на этапе компи- ляции не известен, то в языке должны быть и средства, позволяющие выполнять проверки типов таких объектов. Специальная операция Is (ключевое слово) позволяет проверить, соответствует ли тип объекта конкретному типу Паскаля. объект is тип В качестве типа должен указываться один из классов. Obj is TButton Это выражение возвращает значение логического типа (True, если тип объекта Obj соответствует типу, указанному в правой части, — TButton). Приведение типа объекта Если объект описан как ссылка на класс, то часто требуется применять этот объект как относящийся к конкретному типу, чтобы иметь доступ к его определенным полям и методам. Выполнить приведение к конкретному типу можно, применив операцию as: объект as класс Например, если в переменную MetaClass записан объект с типом TEdit, то получить доступ к полю Text класса TEdit можно с помощью следующей конструкции: (MetaClass as TEdit).Text:= 'содержимое1; Ссылки на классы Язык Delphi позволяет рассматривать классы объектов как своего рода объекты, которыми можно манипулировать в программе. Такая возможность рождает новое понятие — класс класса; его принято обозначать термином метакласс. Для поддержки метаклассов введен специальный тип данных — ссылка на класс (class reference). Он описывается с помощью словосочетания class of, например:
Переменная типа TTextReaderClass объявляется в программе обычным образом:
Значениями переменной ClassRef могут быть класс TTextReader и все порожденные от него классы. Допустимы следующие операторы:
По аналогии с тем, как для всех классов существует общий предок TObject, у ссылок на классы существует базовый тип TClass, определенный, как:
Переменная типа TClass может ссылаться на любой класс. Практическая ценность ссылок на классы состоит в возможности создавать программные модули, работающие с любыми классами объектов, даже теми, которые еще не разработаны. Физический смысл и взаимосвязь таких понятий, как переменная-объект, экземпляр объекта в памяти, переменная-класс и экземпляр класса в памяти поясняет рисунок 3.4. Виртуальные конструкторы Особые возможности ссылок на классы проявляется в сочетании с виртуальными конструкторами. Виртуальный конструктор объявляется с ключевым словом virtual. Вызов виртуального конструктора происходит по фактическому значению ссылки на класс, а не по ее формальному типу. Это позволяет создавать объекты, классы которых неизвестны на этапе компиляции. Механизм виртуальных конструкторов применяется в среде Delphi при восстановлении компонентов формы из файла. Восстановление компонента происходит следующим образом. Из файла считывается имя класса. По этому имени отыскивается ссылка на класс (метакласс). У метакласса вызывается виртуальный конструктор, который создает объект нужного класса.
На этом закончим изучение теории объектно-ориентированного программирования и в качестве практики рассмотрим несколько широко используемых инструментальных классов среды Delphi. Разберитесь с их назначением и работой. Это поможет глубже понять ООП и пригодится на будущее.
|
||||||||||||||
Последнее изменение этой страницы: 2017-02-21; просмотров: 246; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.140.195.8 (0.006 с.) |