Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции програм_new_последняя версия1.doc
Скачиваний:
14
Добавлен:
14.09.2019
Размер:
697.34 Кб
Скачать

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

Составляющими класса являются поля, методы, свойства.

Поля

Определение: Полями называются инкапсулированные в классе данные. Они аналогичны полям записи. Поля могут быть любого типа, в том числе и типа класс. Для обращения к полям используются составные имена вида:

<имя объекта>.< имя поля>

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

Например:

type

Тcomp=class

re,im:real

end;

var a:Тcomp;

begin … … …

a.re:= 6.5;

a.im:=-10.5;

… … …

end.

Тcomp – имя класса, содержащего два поля: re и im, a – объект класса Тcomp (т.е. переменная комплексного типа), ее значениями являются пары вещественных чисел – действительная и мнимые части.

В объектно-ориентированном программировании прямой доступ к полям объекта нежелателен. Чтение и обновление их содержимого должно производится вызовом соответствующих методов. В Delphi у всех стандартных классов все поля недоступны и заменены базирующимися на них свойствами.

При создании новых классов на базе ранее созданных класс-потомок наследует все поля класса-родителя. Удаление и переопределение полей родителя невозможно. Можно добавлять новые поля в классе-потомке.

Например: type

TPerson = class

fam: string

end;

TStudent = class (TPerson)

grup: integer

end;

var x:TStudent;

Таким образом объект х имеет два поля: поле fam, наследуемое от класса TPerson и свое поле grup.

Класс – потомок получает все поля всех своих предков и может дополнять их своими, но не может переопределять их или удалять.

Т.о. чем ниже в дереве иерархии располагается класс, тем больше данных получают в свое распоряжение его объекты. Отметим, что почти все классы имеют имена, начинающиеся с буквы T (от слова Type).

Методы

Метод – это процедура или функция, описанная в классе и предназначенная для операции над полями.

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

Полные описания методов делаются после того, как завершено описание класса объекта. При этом заголовок метода будет иметь вид:

Procedurе < имя класса>.< имя метода> (<формальные параметры>);

Function <имя класса>.<имя метода> (<формальные параметры>):

< тип функции>;

Разрешено писать сокращенный заголовок метода. За заголовком метода следует блок, то есть раздел описаний и раздел операторов. Метод имеет доступ к полям данных объекта, не требуя передачи их ему в виде параметров. Поэтому имена полей класса и имена формальных параметров метода класса не должны совпадать.

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

< имя объекта>.< имя метода>

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

Например:

Type ТСomp=class

re, im: real; {поля класса ТСomp }

procedure Add(z:Tcomp);

function Modul:real; {методы класса ТСomp }

………

end;

{затем в разделе var описываются объекты a, b}

Var a, b:ТComp;

Begin

………

a. Add(b);

{объект а вызывает метод Add с фактическим параметром b}

b. Modul;

{объект b вызывает метод Modul }

………

End.

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

Например:

Type ТСomp = class

re,im: real;

… … …

procedure set (x,y: real); {метод записи в поле, т.е. присвоения }

end; { значений x,y полям re и im}

procedure ТСomp.set; {сокращенный заголовок метода, без параметров}

begin

re:=x;

im:=y;

end;

var a,b: ТСomp;

begin … … …

a.set (-5,10);

b.set (1.3,13.8);

… … …

end.