Информатика -продвинутый курс



ОСНОВЫ ОБЪЕКТНОГО ПРОГРАММИРОВАНИЯ В СИСТЕМЕ ТУРБО-ПАСКАЛЬ - часть 3


var

FirstPozition : Pozition;

FirstPozition.Init(10,15);

Метод задается так же, как и процедура в модуле: внутри объекта записывается заголовок (как в секции Interface модуля); при этом все поля, используемые мето-дом, должны предшествовать его объявлению. Определение метода (расшифровка действий) происходит вне объявления объекта. Имя метода должно предваряться названием типа объекта, которому метод принадлежит, сопровождаемым точкой. Например,

procedure Pozition. Init(CoordX, CoordY: integer);

begin

X: = CoordX:

Y: = CoordY;

end;

Заметим, что имена формальных параметров метода не могут совпадать с именами полей данных объекта.

Также как модуль скрывает детали реализации процедур от пользователя, объект может скрывать свои поля и методы. Для этого используется ключевое слово private (личный). Личные поля и методы доступны только внутри метода. Объявление выглядит следующим образом:

type

ObjectName=object

поле;

поле;

метод;

метод;

private

поле;

поле;

метод;

метод;

end;

Наследование. Рассмотрим точку с координатами Х и Y. Ее можно сделать видимой или невидимой, ей можно задать цвет, ее можно переместить. Создадим объект с такими возможностями:

Point=object

X,Y : integer; "

procedure Init(CoordX, CoordY : integer);

function GetX : integer;

function GetY . integer;

Visible: Boolean;

Color: Word;

procedure Init(CoordX, CoordY : integer; InitCoIor : Word);

function Is Visible : Boolean;

procedure Show;{показывает точку}

procedure Blind; {стирает точку}

procedure Jump(NextX, NextY : integer);{nepeMeiuaer точку}

end;

Заметим, однако, что поля X.Y и методы GetX, GetY практически совпадают с соответствующими полями и методами объекта Pozition.

Турбо-Паскаль предоставляет возможность учесть эту ситуацию. Следует считать тип объекта Point порожденным типом Pozition, записав это следующим образом:

Point=object(Pozition)

Visible : Boolean;

Color : Word;

procedure Init(CoordX, CoordY : integer; InitColor : Word);




Содержание  Назад  Вперед