Имя_объекта.имя_метода

Методы

Поля

Классы и объекты

5.3.1. Объекты

 

В реальном мире нас окружают различные объекты (люди , предметы, явления). Они обладают определенными параметрами (характеристиками). Они могут выполнять действия, либо над ними можно выполнять те или иные действия. Например, возьмем такой объект как стол. Он обладает параметрами: габариты, тип материала, цвет и т.п. С ним можно выполнять различные действия: его можно создать, чистить, ставить на него другие предметы, уничтожить и т.п.

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

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

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

 

5.3.2. Данные типа класс.

 

В основе ООП лежит понятие класса. Класс в ООП - это своеобразный тип данных, включающий в себя поля данных и подпрограммы для обработки этих данных .

В ООП принято подпрограммы для обработки полей класса называть методами. Из определения следует, что в классе сосредоточены все его характеристики и поведение. Фактически класс это идентификатор сложного типа (данные + методы), объявляемый в разделе TYPE.

Объект - это переменная типа класс, объявленная в разделе переменных.

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

Форма записи:

Type идтк = class

имя_1 : тип; имя_2 : тип ;

имя_n : тип ;

процедура1 имя (список);

процедураn имя (список);

End ;

где идтк - идентификатор типа (начинается с буквы Т).

Пример объявление класса Tpoint:

 

Type Tpoint = class

X, Y :Integer ;

Color : Word ;

Vis : Boolean ;

Procedure SetLocation (Nx,Ny : Integer) ; {задание нового положения}

Procedure SetColor( Newc : word ) ; {установка цвета}

Procedure SetVisible ( Vis : Boolean ) ; {высвечивание или гашение}

End ;

 

Здесь TPoint идентификатор типа; X, Y, Color, Vis – поля; SetLocation, SetColor, SetVisible – методы.

Переменные типа CLASS называются объектами и объявляются в разделе переменных, например, запись вида

Var PointA , PointB : TPoint ;

 

означает, что в программе используется две переменные типа CLASS (идентификатор типа - TPoint).

Замечание. Объявление данных типа CLASS аналогично объявлению данных типа запись в ТР, но кроме полей класс включает в себя процедуры и функции, выполняющие действия над этими данными.

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

 

5.3.3. Абстрактные классы

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

Классы, для которых нельзя создать соответствующие им объекты называются абстрактными.

 

5.3.4. Методы

 

Процедуры и функции определяющие действия над данными в типе CLASS принято называть методами.

В описании типа CLASS указываются только имена подпрограмм со списками формальных параметров (списки формальных параметров могут отсутствовать - это означает, что в подпрограмме используются глобальные переменные). Предполагается, что где-то позже (в разделе подпрограмм или модуле) располагаются тексты этих подпрограмм.

Методы класса определяются так же как и обычные подпрограммы, но в качестве имен подпрограмм используются составные имена вида

 

имя класса.имя метода

 

Например, процедура SetLocation из предыдущего примера должна быть записана в виде

Procedure Tpoint.SetLocation (Nx,Ny:Integer);

. . . . . . . . . . . . . . . .

begin

. . . . . .

End;

Здесь Tpoint.SetLocation – это составное имя.

Чтобы метод был выполнен в программе надо также указать составное имя, форма которого имеет вид

Например инструкция

PointA.SetLocation(A,B);

вызывает применение метода SetLocation к объекту PointA . Фактически инструкция применения метода к объекту - это спецефический способ вызова процедуры.

 

5.3.5.Правила назначения имен классов и их элементов.

В Object Pascal (и других языках) принято следовать следующим правилам назначения имен классов и их элементов.

Если следовать этим соглашениям, то разработка новых компонентов и чтение исходных текстов станет существенно проще.

1. Все декларации типов начинаются на букву T. Delphi не требует этого, но это делает очевидным, что "TEdit", например, есть определение типа, а не переменная или поле класса.

2. Внутреннее поле для хранения данных свойства должно носить имя, начинающееся с буквы “F”. Например, Fcount : Integer;

3. Параметр метода, значение которого присваивается какому либо полю класса, обычно имеет то же имя, что и поле, но только префикс F заменяется на А, например:

Procedure SetCount( Acount : Integer);

4. Имя метода, с помощью которого записывается значение свойства обычно начинается со слога Set. Например, метод SetStyle должен выполнять запись в свойство Style.

5. Имя метода, с помощью которого у свойства читается его значение, обычно начинается со слога Get, Например, метод GetStyle должен выполнять чтение для свойства Style.

8.Имена методов-обработчиков сообщений обычно начинаются с префикса WM, имена типов сообщений - с TWM, индексов сообщений - с WM_.

9. Имена свойств, через которые происходит обращение к обработчикам событий задаются именами с префиксом on (например, OnClick, OnCreate и т.д.).