Программирование в среде Delphi. Часть 2. Создание оконных приложений. Садовская О.Б. - 5 стр.

UptoLike

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

5
fOne : integer;
fTwo : string;
fThree : tObject;
function FirstFunc(x : real) : real;
procedure SecondProc;
end;
Заголовки методов при описании их реализации повторяют заго-
ловки в описании типа , но дополняются именем класса , которое отде-
ляется от имени процедуры точкой. Например:
procedure tPerson.SecondProc;
Для того чтобы обратиться к методам, также необходимо исполь-
зовать составные имена:
var MyObj : tPerson; y : real;
begin
……………………………
MyObj.SecondProc;
y := MyObj.FirstFunc(3.14);
…………………………….
end;
Методы, определённые в классе, могут быть статическими, вирту-
альными, динамическими или абстрактными. Тип метода определяется
механизмом перекрытия его в потомках.
Для статических методов перекрытие осуществляется компилято-
ром. Например, пусть у нас имеется описание родительского класса
tBase и его потомка tStudent, содержащих одноимённый метод Cnt:
type tBase = class
procedure Cnt;
end;
tStudent = class(tBase)
procedure Cnt;
end;
var Obj1 : tBase; Obj2 : tStudent;
begin
……………………………..
Obj1.Cnt;
Obj2.Cnt;
……………………………..
end;
В соответствии с принципом полиморфизма в операторе
Obj1.Cnt; вызывается метод , описанный в классе tBase , а в операторе
Obj2.Cnt; вызывается метод , описанный в классе tStudent. По умолча -
нию все методы, описанные в классе, являются статическими.
Динамические и виртуальные методы отличаются от статических
тем , что замещение родительских методов происходит на этапе вы-
полнения программы. Для объявления виртуального метода в роди-
                                          5
             fOne       : integer;
             fTwo      : string;
             fThree : tObject;
             function FirstFunc(x : real) : real;
             procedure SecondProc;
             end;
      З а головки м етод ов при описа н ии их реа лиза ции повторя ю т за го-
ловки в описа н ии т ипа , н о д ополн я ю тся им ен ем кла сса , кот орое от д е-
ля ется от им ен и процед у ры т очкой. Н а прим ер:
                            procedure tPerson.SecondProc;
      Д ля того чт об ы об ра т ит ься к м ет од а м , т а кж е н еоб ход им о исполь-
зова т ь сост а вн ые им ен а :
      var MyObj : tPerson; y : real;
      begin
      … … … … … … … … … … … …
      MyObj.SecondProc;
      y := MyObj.FirstFunc(3.14);
      … … … … … … … … … … … … .
      end;
      М ет од ы, опред елён н ые в кла ссе, м огу т б ыт ь ст а тическим и, вирт у -
а льн ым и, д ин а м ическим и или а б стра кт н ым и. Т ип м етод а опред еля ет ся
м еха н изм ом перекрыт ия его в пот ом ка х.
      Д ля ст а т ических м ет од ов перекрытие осу щест вля ет ся ком пиля то-
ром . Н а прим ер, пу ст ь у н а с им еется описа н ие род ит ельского кла сса
tBase и его пот ом ка tStudent, сод ерж а щих од н оим ён н ый м етод Cnt:
      type tBase = class
               procedure Cnt;
               end;
               tStudent = class(tBase)
               procedure Cnt;
               end;
      var      Obj1 : tBase; Obj2 : tStudent;
      begin
      … … … … … … … … … … … … ..
      Obj1.Cnt;
      Obj2.Cnt;
      … … … … … … … … … … … … ..
      end;
      В     соот вет ст вии с прин ципом полим орф изм а в опера торе
Obj1.Cnt; вызыва ется м ет од , описа н н ый в кла ссе tBase , а в опера т оре
Obj2.Cnt; вызыва ется м ет од , описа н н ый в кла ссе tStudent. По у м олча -
н ию все м етод ы, описа н н ые в кла ссе, я вля ю т ся ста т ическим и.
      Д ин а м ические и вирт у а льн ые м етод ы отлича ю т ся от ст а т ических
т ем , чт о за м ещен ие род ит ельских м ет од ов происход ит н а э          т а пе вы-
полн ен ия програ м м ы. Д ля об ъя влен ия вирт у а льн ого м ет од а в род и-