Объявление класса. Поля и методы
С точки зрения синтаксиса класс представляет собой структурный тип данных, в котором помимо полей разрешается описывать прототипы(заголовки) процедур и функций, работающих с ними полями данных. Пo форме описание класса напоминает запись.
Как уже упоминалось ранее, процедуры и функции, заголовки которых описаны в классе, получили название методов.
Описание типа класс выполняется следующим образом:
Туре <имя класса> = object
<описание полей класcа>
<прототипы методов>
end;...
Тела методов класса описываются после объявления класса. Причем в заголовке метода можно не повторять списка параметров, но перед именем метода необходимо указать имя класса, отделив его от имени метода точкой:
Procedure <имя класса>.<имя метода>;
<локальные ресурсы процедуры>
Begin
<тело процедуры>
End;...
или
Function <имя классах >.<имя метода>;
<локальныс ресурсы функции>
Begin
<тело функции>
End; ...
Пример. Разработал класс для реализации объекта Комната, который должен хранить длину и ширину комнаты и отвечать на запрос о площади комнаты.
Объект Комната характеризуется двумя параметрами: длиной и шириной, значит соответствующий класс должен включать два поля, в которых эти значения будут храниться. Единственное сообщение, на которое должен реагировать объект, запрос о площади комнаты, следовательно, класс должен включать метод-функцию, которая должна возвращать значение площади комнаты.
Type TRoom = object
length, width: real; {поля: длина и ширина комнаты}
function Square:real; {метод определения площади}
end;
Function TRoom.Square; {тело метода определения площади}
Begin
Square:= length*width;
End;...
Поскольку поля и методы описаны в одном классе, все поля класса доступны методам класса без дополнительного указания.
Физически это реализуется следующим образом. Каждая переменная - объект данного класса - при объявлении получает свой набор полей класса. Эти поля собраны в запись, внешнее имя которой совпадает с именем объекта. Любой метод класса, вызванный для конкретного объекта неявно получает специальный параметр Self, значением которого является адрес записи, объединяющей все поля этого объекта. Этот параметр иногда называют обобщенным внутренним именем объекта. Реально обращение к полям конкретного объекта происходит через это обобщенное имя:
Function TRoom.Square; {тело метода определения площади}
Begin
Square:=Self.length* Self.width;
End;...
Мри необходимости имя Selfможно указывать явно, например @Self-адрес записи, содержащей поля объекта (естественно, такое обращение возможно только из методов, вызываемых для конкретного объекта, так как вне объекта это имя не определено).
Дата добавления: 2015-12-01; просмотров: 768;