Класс – тип данных, в котором сочетаются сгруппированные данные (например, поля в записях), свойства и методы их обработки (подпрограммы).
Класс – это тип данных, а объект – конкретный экземпляр класса, т.е. класс служит образцом для создания объектов.
Классы имеют поля, свойства и методы.
В основе классов лежат три фундаментальных принципа:
Наследование. Описывается один базовый класс, а производные классы будут основываться на этом базовом классе. При этом наследуются все поля, свойства и методы базового (родительского) класса. Можно вводить новые поля, свойства и методы в дополнение к наследуемым. Методы для наследников разрешается переопределять. Прибор – переносной плеер.
Принцип наследования приводит к созданию ветвящегося дерева классов. Каждый потомок дополняет возможности родителя новыми и передает их своим потомкам.
Полиморфизм. Это свойство классов решать схожие задачи разными способами. Изменяя алгоритм метода в потомках класса (перекрывая его), можно получить два одноименных метода с разной алгоритмической основой, которые будут придавать объектам разные свойства. Решение, метод какого класса вызывается при обращении к переменной, может приниматься, например, в зависимости от типа переменной. Если переменная относится к типу плеер, то будет вызван метод «включить», определенный именно для плеера.
Инкапсуляция. Объединение в единое целое трех сущностей (полей, методов и свойств) называется инкапсуляцией. Это делает класс самодостаточным для решения конкретной задачи. Например, класс TMemo представляет собой текстовый редактор, класс TForm соединяет (инкапсулирует в себе) все необходимое для создания Windows-окна. Инкапсуляция – средство для создания библиотеки классов. Она обеспечивает разграничение доступа к различным полям и свойствам класса:
- в любом месте программы;
- внутри текущего модуля.
Свойства не должны изменяться бесконтрольно (например: плеер – мощность звука – а батарейка?). Должны быть созданы методы, которые позволят учитывать взаимное влияние свойств, а сами свойства и поля могут быть скрыты для доступа извне.
Описание класса
Type имя класса =
Class имя родительского класса
Список членов класса
End.
Пример:
Type TMy Class = class
Count = integer;
Name=string;
Procedure Show My Class (dis=boo)
Function Get Count: integer;
End.
В классе TMyClass имеются два поля Count и Name, процедура и функция.
Переменная MyClass – объект, экземпляр класса TMyClass. Var My Class: TMyClass;
Доступ к полям и методам объекта – как и к полям записи:
Var O=TMyClass
O. Count: = 1;
O. Name: = Класс;
Доступность членов класса зависит от уровней видимости класса, вводимых при описании членов: public, private, protected, published, automated.
После описания класса описывается (приводится) реализация его методов:
Function TMyClass, Get Count = integer;
Begin
Result: = Count
End;
Чаще всего, большая часть функциональности исследуемых методов уже описана в родительском классе (класс TButton уже обрисовывает кнопку). Т.е. можно вызвать метод из родительского класса, а затем добавить к кнопке еще что-нибудь. Для этого в нужном месте метода ставится ключевое слово inherited, что вызовет одноименный метод родительского класса. Вызвать другой метод из родительского класса можно явным указанием его имени:
Inherited Click.
Методы при описании класса можно снабжать дополнительными характеристиками. Они показывают, как будет этот метод реализовываться в классах-наследниках:
- статические методы (при известных типах объектов);
- виртуальные и динамические методы;
Procedure Move; virtual (dynamic);
Такие методы могут быть перекрыты в классах-наследниках методами с одноименными заголовками (названиями).
Procedure Move; override;
Здесь автоматически будет определяться тип объекта.
- абстрактные методы.
Метод в родительском классе не имеет реализации, а полностью (и различно) реализуется в наследниках.
Тип объекта может быть определен специальной операцией is.
Объект is тип – true или false.
Составляющие класса:
Поля. Полями называются инкапсулированные в классе данные, которые могут быть любого типа.
Каждый объект получает уникальный набор полей, но общий для этого класса набор методов и свойств. Обращение к полям – лучше только с помощью методов и свойств класса.
Методы. Методы – это инкапсулированные в класс процедуры и функции.
Класс – это тип данных, а объект – конкретный экземпляр класса, т.е. класс служит образцом для создания объектов.
Классы имеют поля, свойства и методы.
В основе классов лежат три фундаментальных принципа:
Наследование. Описывается один базовый класс, а производные классы будут основываться на этом базовом классе. При этом наследуются все поля, свойства и методы базового (родительского) класса. Можно вводить новые поля, свойства и методы в дополнение к наследуемым. Методы для наследников разрешается переопределять. Прибор – переносной плеер.
Принцип наследования приводит к созданию ветвящегося дерева классов. Каждый потомок дополняет возможности родителя новыми и передает их своим потомкам.
Полиморфизм. Это свойство классов решать схожие задачи разными способами. Изменяя алгоритм метода в потомках класса (перекрывая его), можно получить два одноименных метода с разной алгоритмической основой, которые будут придавать объектам разные свойства. Решение, метод какого класса вызывается при обращении к переменной, может приниматься, например, в зависимости от типа переменной. Если переменная относится к типу плеер, то будет вызван метод «включить», определенный именно для плеера.
Инкапсуляция. Объединение в единое целое трех сущностей (полей, методов и свойств) называется инкапсуляцией. Это делает класс самодостаточным для решения конкретной задачи. Например, класс TMemo представляет собой текстовый редактор, класс TForm соединяет (инкапсулирует в себе) все необходимое для создания Windows-окна. Инкапсуляция – средство для создания библиотеки классов. Она обеспечивает разграничение доступа к различным полям и свойствам класса:
- в любом месте программы;
- внутри текущего модуля.
Свойства не должны изменяться бесконтрольно (например: плеер – мощность звука – а батарейка?). Должны быть созданы методы, которые позволят учитывать взаимное влияние свойств, а сами свойства и поля могут быть скрыты для доступа извне.
Описание класса
Type имя класса =
Class имя родительского класса
Список членов класса
End.
Пример:
Type TMy Class = class
Count = integer;
Name=string;
Procedure Show My Class (dis=boo)
Function Get Count: integer;
End.
В классе TMyClass имеются два поля Count и Name, процедура и функция.
Переменная MyClass – объект, экземпляр класса TMyClass. Var My Class: TMyClass;
Доступ к полям и методам объекта – как и к полям записи:
Var O=TMyClass
O. Count: = 1;
O. Name: = Класс;
Доступность членов класса зависит от уровней видимости класса, вводимых при описании членов: public, private, protected, published, automated.
После описания класса описывается (приводится) реализация его методов:
Function TMyClass, Get Count = integer;
Begin
Result: = Count
End;
Чаще всего, большая часть функциональности исследуемых методов уже описана в родительском классе (класс TButton уже обрисовывает кнопку). Т.е. можно вызвать метод из родительского класса, а затем добавить к кнопке еще что-нибудь. Для этого в нужном месте метода ставится ключевое слово inherited, что вызовет одноименный метод родительского класса. Вызвать другой метод из родительского класса можно явным указанием его имени:
Inherited Click.
Методы при описании класса можно снабжать дополнительными характеристиками. Они показывают, как будет этот метод реализовываться в классах-наследниках:
- статические методы (при известных типах объектов);
- виртуальные и динамические методы;
Procedure Move; virtual (dynamic);
Такие методы могут быть перекрыты в классах-наследниках методами с одноименными заголовками (названиями).
Procedure Move; override;
Здесь автоматически будет определяться тип объекта.
- абстрактные методы.
Метод в родительском классе не имеет реализации, а полностью (и различно) реализуется в наследниках.
Тип объекта может быть определен специальной операцией is.
Объект is тип – true или false.
Составляющие класса:
Поля. Полями называются инкапсулированные в классе данные, которые могут быть любого типа.
Каждый объект получает уникальный набор полей, но общий для этого класса набор методов и свойств. Обращение к полям – лучше только с помощью методов и свойств класса.
Методы. Методы – это инкапсулированные в класс процедуры и функции.