Составляющие класса
КЛАССЫ И ОБЪЕКТЫ
Классы – это особое «изобретение» программистов для упрощения разработки сложных программ и улучшения их качества. В основе классов лежат три фундаментальных принципа, которые называются инкапсуляция, наследование и полиморфизм.
Инкапсуляция
Класс представляет собой единство трёх сущностей – полей, методов и свойств. Объединение этих сущностей в единое целое и называется инкапсуляцией. Инкапсуляция позволяет во многом изолировать класс от остальных частей программы, сделать его «самодостаточным» для решения конкретной задачи. В результате класс всегда несёт в себе некоторую функциональность. Например, класс T Form содержит (инкапсулирует в себе) всё необходимое для создания Windows-окна, класс T Memo представляет собой полнофункциональный текстовый редактор и т.д.
Инкапсуляция представляет собой мощное средство обмена готовыми к работе программными заготовками. Библиотека классов Delphi – это, фактически, набор «кирпичиков», созданных программистами Borland для построения Ваших программ.
Наследование
Любой класс может быть порождён от другого класса. Для этого при его объявлении указывается имя класса-родителя:
T Child Class = class (T Parent Class).
Порождённый класс автоматически наследует поля, методы и свойства своего родителя и может добавлять их новыми. Принцип наследования обеспечивает поэтапное создание сложных классов и разработки собственных библиотек классов.
Все классы Object Pascal порождены от единственного родителя – класса T Object. Этот класс не имеет полей и свойств, но включает в себя методы самого общего назначения, обеспечивающие весь жизненный цикл любых объектов – от их создания до уничтожения.
Для примера на рис. 10.1 показан небольшой фрагмент дерева классов Delphi. Класс T Persistent обогащает возможности своего родителя T Object: он «умеет» сохранять данные в файле и получать их из него, в результате это умеют делать и все его потомки. Класс T Component, в свою очередь, умеет взаимодействовать со средой разработчика и передаёт это умение своим потомкам. T Control не только способен работать с файлами и средой разработчика, но он ещё умеет создавать и обслуживать видимые на экране изображения, а его потомок T win Control может создавать Windows- окна и т.д.
Рис 10.1.
Полиморфизм
Полиморфизм – это свойство классов решать схожие по смыслу проблемы разными способами. В рамках Object Pascal поведенческие свойства класса определяются набором входящих в него методов. Изменяя алгоритм того или иного метода в потомках класса, программист может придавать этим потомкам отсутствующие у родителя специфические свойства. Для изменения метода необходимо прикрыть его в потомке, т.е. объявить в потомке одноимённый метод и реализовать в нём нужные действия. В результате в объекте-родителе и объекте-потомке будут действовать два одноимённых метода, имеющие разную алгоритмическую основу и, следовательно, придавать объектам разные свойства. Это и называется полиморфизмом объектов.
Составляющие класса
Поля
Полями называются инкапсулированные в классе данные. Поля могут быть любого типа, в том числе – классами, например:
Type T MyClass – class aIntField; Integer;
aStrField; String; aObjField: T Object; ------ -- -- -- -- -- End;
Класс-потомок получает все поля всех своих предков и может дополнять их своими, но не может переопределять их или удалять. Чем ниже в дереве иерархии располагается класс, тем больше данных получают в своё распоряжение его объекты.
Методы
Инкапсулированные в классе процедуры и функции называются методами. Они объявляются так же, как и обычные подпрограммы:
Type
T MyClass = class Function MyFunc (aPar: Integer): Integer;
Procedure MyProc; End.
Доступ к методам класса, как и к его полям, возможен с помощью составных имён:
Var aObject: M MyClass;
Begin -- -- -- -- aObject, MyProc -- -- -- -- End;
Свойства
Свойства – это специальный механизм классов, регулирующий доступ к полям. Свойства объявляются с помощью зарезервированных слов property, read и write. Свойство связано с некоторым полем и указывает те методы класса, которые должны использоваться при записи в это поле или при чтении из него. Например:
Type
T aClass = class IntField; Integer; Function GetField: Integer;
Procedure SetField (Value: Integer)
Property IntegerValue: Integer read GetField write SetFIELD; End;
Объявление класса
Любой вновь создаваемый класс может содержать секции (разделы), определяемые зарезервированными словами published (декларированные), private (личные), protected (защищённые), public (доступные), automated (автоматизированные).
В Object Pascal разрешается сколько угодно раз объявлять любую секцию, причём порядок следования секций не имеет значения. Любая секция может быть пустой.
При объявлении класса-потомка разрешается перемещать элементы класса из одной области видимости в другие.
Класс может объявляться только в интерфейсной области модуля или в самом начале области реализации. Нельзя определять классы в разделе описаний программ.
<== предыдущая лекция | | | следующая лекция ==> |
О СУДЬБАХ РУССКОЙ ПСИХОЛОГИИ | | | Молодежная культура как феномен сферы свободного времени |
Дата добавления: 2019-07-26; просмотров: 285;