Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Класс представляет собой единство трех сущностей - полей, методов и свойств.

Поиск

Объединение этих сущностей в единое целое и называется инкапсуляцией.

Инкапсуляция позволяет во многом изолировать класс от остальных частей программы, сделать его «самодостаточным» для решения конкретной задачи. В результате класс всегда несет в себе некоторую функциональность.

Например, класс TForm содержит (инкапсулирует в себе) все необходимое для создания окна Windows -программы, класс TMemo представляет собой полнофункциональный многострочный текстовый редактор, класс TTimer обеспечивает работу программы с таймером и т.д.

Инкапсуляция является мощным средством обмена готовыми к работе программными заготовками.

Библиотека классов Delphi - это, фактически, набор «кирпичиков», созданных программистами Borland для построения программ.

Наследование

Любой класс может быть порожден от другого класса. Для этого при его объявлении указывается имя класса-родителя:

Порожденный класс автоматически наследует поля, методы и свойства своего родителя и может добавлять новые. Таким образом, принцип наследования обеспечивает поэтапное создание сложных классов и разработку собственных библиотек классов.

Все классы Delphi порождены от единственного родителя - класса TObject.

Этот класс не имеет полей и свойств, но включает в себя методы самого общего назначения, обеспечивающие весь жизненный цикл любых объектов - от создания до уничтожения. Невозможно создать класс, который не был бы дочерним классом TObject.

Следующие два объявления идентичны:

Принцип наследования приводит к созданию ветвящегося дерева классов, постепенно разрастающегося при перемещении от класса TObject к его потомкам.

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

Для примера на рис.1.1 показан небольшой фрагмент дерева классов Delphi.

Класс TPersistent обогащает возможности своего родителя TObject: он «умеет» сохранять данные в файле и получать их из него, в результате это умеют делать и все его потомки. Класс TComponent, в свою очередь, умеет взаимодействовать со средой разработчика и передает это умение своим потомкам. Класс TControl не только способен работать с файлами и средой разработчика, он еще умеет создавать и обслуживать видимые на экране изображения, а его потомок TWinControl может создавать окна Windows -программ и т.д.

Рис.1.1

Полиморфизм

Полиморфизм - это свойство классов решать схожие по смыслу проблемы разными способами.

В рамках Delphi поведенческие свойства класса определяются набором входящих в него методов. Изменяя алгоритм того или иного метода в потомках класса, программист может придавать этим потомкам отсутствующие у родителя специфические свойства.

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

В результате в объекте-родителе и объекте-потомке будут действовать два одноименныхметода, имеющие разную алгоритмическую основу и, следовательно, придающие объектам разные свойства.

Это и называется полиморфизмом объектов.

В Delphi полиморфизм достигается не только описанным выше механизмом наследования и перекрытия методов родителя, но и их виртуализацией, позволяющей родительским методам обращаться к методам своих потомков.

Составляющие класса

Поля

Полями называются инкапсулированные в классе данные.

Поля могут быть любого типа, в том числе - классами, например:

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

Фундаментальный принцип инкапсуляции требует обращаться к полям только с помощью методов и свойств класса.

Однако в Delphi разрешается обращаться к полям и напрямую:



Поделиться:


Последнее изменение этой страницы: 2016-08-26; просмотров: 110; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.127.230 (0.006 с.)