Программирование в среде Турбо Паскаль (Поляков, Круглов) - страница 177

| END;


Рис. 13.2

- 275 -


PROCEDURE ObjPos.Init2( Pos : PosRec );

| BEGIN

| >with Pos do begin

{ присоединение для записи Pos }

| > Self.Line:= Line; { Self развязывает одинаковые имена}

| > Self.Col := Col

| >end {with}

| END;


Рис. 13.2 (окончание)

13.3. Наследование


При помощи объекта типа ObjPos (см. рис. 13.1) определяется положение какого-либо символа в тексте на дисплее, но сам символ в нем не определен. Объявим объект с именем ObjSym, добавляющий символ и выполняющий определенные действия с ним (рис. 13.3).


| USES CRT; { в примере используется системный модуль CRT }

| TYPE

| >ObjSym = OBJECT

| > Line : Word; { номер строки с Sym }

| > Col : Word; { номер столбца с Sym }

| > Sym : Char; { поле-значение символа }

| >PROCEDURE Init(init_line,init_col : Word;

| > init_sym : Char);

| >FUNCTION GetLine : Word; { опрос Line }

| >FUNCTION GetCol : Word { опрос Col }

| >PROCEDURE Print { вывод Sym }

| END;

| PROCEDURE ObjSym.Init; { инициализация полей объекта }

| BEGIN

| > Line := init_line; { метод задания номера строки }

| > Col := init_col; { метод задания номера столбца }

| > Sym := init_sym { задание значения символа } END;

| >FUNCTION ObjSym.GetLine : Word;

| BEGIN

| > GetLine := Line { метод опроса номера строки }

| END;


Рис. 13.3

- 276 -

| FUNCTION ObjSym.GetCol : Word;

| >BEGIN

| > GetCol := Col

| > { метод опроса номера столбца }

| >END;

| PROCEDURE ObjSym.Print;

| >BEGIN

| > CRT.GotoXY(Col,Line);

| > { процедура из библиотеки CRT }

| > Write( Sym ) { вывод символа в позиции }

| >END;


Рис. 13.3 (окончание)

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

Синтаксически наследование выражается следующим образом. В случае определения типа объекта, как производного от уже существующего, имя прародительского объекта заключается в круглые скобки после служебного слова OBJECT:


TYPE

ИмяОбъектаНаследника = OBJECT( ИмяОбъектаПрародителя )

НовыеПоляОбъектаНаследника;

НовыеМетодыОбъектаНаследника;

END;

Пример на рис. 13.3 по правилам ООП и Турбо Паскаля должен выглядеть, как показано на рис. 13.4 (на нем не показаны, но используются определения, введенные ранее на рис. 13.1).