понедельник, 8 марта 2010 г.

Понятие класса.

В 80-х годах стали появляться первые коммерческие системы разработки, в которых была реализована новая парадигма программирования, так называемый объектный подход, что позволило резко повысить производительность труда программистов. Подход был основан на понятии объекта, типа данных, в котором сочетаются как свойства, сгруппированные данные (пример – поля в записи), так и методы их обработки (подпрограммы).
Фактически объект стал отражать реальные и даже абстрактные понятия окружающего мира. Например, автомобиль характеризуется такими свойствами, как марка, тип двигателя, наличие колес и руля. «Методы» автомобиля определяют его способность двигаться в нужном направлении в соответствии со значениями своих свойств: объемом бензина в баке, углом поворота руля. Работать с привычными понятиями человеку легче, чем с абстрактными числами.
Класс – это тип данных, а объект – конкретный существующий в памяти компьютера экземпляр класса, переменная соответствующего типа. Классы имеют поля, свойства и методы. Объект создается специальным методом, который называется конструктор. А удаляется объект из памяти другим методом – деструктором.
В основе объектного программирования лежат три принципа: наследование, полиморфизм, инкапсуляция.
Наследование. Программисту достаточно описать базовый класс, а затем классы наследники, которые будут наследовать все поля, свойства и методы базового (родительского) класса.
Полиморфизм. Объект наследник может перекрывать поля и методы объекта родителя.
Инкапсуляция. Инкапсуляция позволяет скрыть внутри описания различные характеристики и возможности класса. Внутри классов некоторые поля и методы можно сделать свободно доступными для использования в любом месте программы, а другие доступными только внутри текущего модуля и собственных методов класса. Инкапсуляция позволяет разграничить доступ разработчиков к различным полям и свойствам класса.
Кроме этих трех фундаментальных возможностей в Delphi реализована возможность обработки события, возникающие в процессе выполнения программы.
Новый класс описывается в Паскале с помощью ключевого слова Class.
Type
Имя_класса=Class(имя_родительского_класса)
Список_членов_класса
End;
Имя родительского класса указывается, если новый класс должен наследовать все его характеристики. Если имя родительского класса опустить, то новый будет наследовать характеристики базового класса TObect.
Список членов класса представляет собой список полей, свойств и методов, которые записываются как обычные поля записи. Например,
Type
TMyClass = Class
Count:integer;
Name:Srtring;
Procedure ShowMyClass (Dis:Boolean);
Function GetCount :integer;
End;
Var
C:TMyClass;
Доступ к полям и методам объекта осуществляется в точности, как при доступе к полям записи, - указанием нужного поля или метода через точку.
Пример:
Var k:TMyClass;

k.Count:=0;
k.Name:=’Class’;
k.ShowMyClass(true);
Пять уровней инкапсуляции.
Доступность любых членов класса определяется принадлежностью к одному из пяти уровней видимости класса, определяемых специальными ключевыми словами: public, Private, Protected, publishered, automated. По умолчанию видимость родительских членов класса наследуется в точности, однако разрешено повышать видимость – делать поля, свойства и методы более доступными. Понижение видимости не допускается.
Public – члены класса, описанные в этом разделе, доступны из любой точки программы.
Private – самые жесткие ограничения. Члены класса, описанные в этом разделе, доступны только в том модуле, к котором описаны.
Protected – видимость членов класса, расположенных в этом разделе, совпадает с видимостью раздела Private с единственным отличием. Члены класса раздела Protected доступны также внутри методов классов, являющихся наследниками данного класса и описанных в других модулях.
Published – поля, доступных для редактирования и изменения значений во время проектирования и из Инспектора Объектов. По видимости свойства не отличаются от членов классов, расположенных в разделе Public.
во время проектирования и из Инспектора Объектов. По видимости свойства не отличаются от членов классов, расположенных в разделе Public.
Automated – правила видимости этого раздела совпадают с правилами видимости для раздела Public.
Типы методов
Каждый метод класса может иметь дополнительные характеристики, определяющие, как будет реализовываться этот метод в классах-наследниках.
Статические методы. Все методы по умолчанию считаются статическими. Это означает, что их вызов будет происходить в соответствии с принципом полиморфизма.
Виртуальные и динамические методы. Статические методы удобны, когда в программе известно, какие типы объектов будут использоваться. Если в классах-наследниках методы должны быть перекрыты методами с одноименными заголовками. Вместо виртуального метода можно использовать динамический метод. Разница между виртуальными и динамическими методами заключается только в программной реализации. Виртуальные методы оптимизированы для максимального быстродействия, динамические – для максимальной экономии памяти.
Литература: Бобровский С. Delphi 5: учебный курс – СПб:Питер, 2001. – 640 с.: ил.

Комментариев нет:

Отправить комментарий