Методы в Object Pascal. Семенов Н.М. - 15 стр.

UptoLike

Составители: 

15
67: constructor TTechnicalBook . Create;
68: begin
69: inherited Create (AnAuthor, ATitle);
70: FTechEditor := AnEditor;
71: end;
72:
73:
74: function TTechnicalBook . GetTechEditor;
75: begin
76: Result := FTechEditor;
77; end;
78:
79:
80: procedure TTechnicalBook . SetTechEditor;
81: begin
82: FTechEditor :=AnEditor;
83: end;
84:
85: end.
Модуль Books1, показанный в листинге 1, определяет два специализированных класса -
TBook и TTechnicalBook. У каждого представителя класса TBook есть два поля - FAuthor и FTitle,
в которых содержатся автор и название конкретной книги. Поле данных FTitle - это просто
переменная типа String.
В то же время поле FAuthor является ссылкой на другой объект, содержащий информацию
об авторе данной книги. FAuthor - это тип, определенный вне данного модуля. Подразумевается,
что этот тип будет импортироваться из модуля Authors, указанного в списке uses в строке 6.
Хотя определение класса TAuthor не показано, можно осмысленно выполнять
определенные операции с представителями этого класса.
В строке 13 объявляется конструктор Create класса TBook, а в строках с 67 по 71
приведена реализация конструктора. Конструктор отвечает за инициализацию вновь созданного
представителя класса, невидимо и неявно переданного ему в параметре Self. Значения, которыми
надо инициализировать два поля данных класса TBook-FTitle и FAuthor - передаются в
формальных параметрах конструктора AuAuthor и ATitle. Инициализация выполняется в строках
36 и 37.
В строке 35 вызывается наследуемый конструктор, который заботится об инициализации
непосредственного предшественника класса TBook, в нашем случае - класса TObject.
В строках с 14 по 17 приведены объявления, а в строках с 41 по 62 дана реализация
простых методов для доступа к полям. Эти методы считывают и устанавливают значения полей
объекта TBook.
Второй класс, определенный в модуле листинга 1 - TTechnicalBook-расширяет понятие
книги, добавляя к наследуемому определению ссылку на технического редактора.
Расширенному классу требуется дополнительная инициализация, которая не выполняется
в наследуемом конструкторе. По этой причине в 22 и 23 строках объявляется локальный
конструктор, а в строках с 67 по 71 приводится его реализация.
Конструктор TechnicalBook.Create заботится об инициализации поля FTechEditor,
специфичного для класса TTechicalBook. Однако при инициализации унаследованных полей он
пользуется услугами конструктора, наследуемого из класса TBook.