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

UptoLike

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

6
тельском классе необходимо использовать зарезервированное слово
virtual, а для объявления динамического метода зарезервированное
слово dinamic. В классе-потомке в заголовке замещающего метода
должно быть указано зарезервированное слово override. Например:
type tBase = class
procedure Cnt; virtual;
end;
tStudent = class(tBase)
procedure Cnt; override;
end;
var Obj1 : tBase;
Obj2 : tStudent;
begin
……………………………..
Obj1.Cnt;
Obj2.Cnt;
……………………………..
end;
Если бы мы захотели, чтобы метод Cnt в классе tBase был ди-
намическим, слово virtual в заголовке этой процедуры следовало бы
заменить словом dinamic. Различие между виртуальными и динамиче-
скими методами невелико и связано с особенностями реализации их
вызовов. Можно сказать, что виртуальные методы более эффективны
с точки зрения затрат времени, а динамические методы позволяют бо-
лее рационально использовать оперативную память.
Абстрактными называются виртуальные или динамические мето-
ды, которые определены в классе, но не содержат никаких действий,
никогда не вызываются и обязательно должны быть переопределены в
классах-потомках. Объявляется абстрактный метод при помощи заре -
зервированного слова abstract, записанного после слова virtual или
dinamic. Например,
procedure draw; virtual; abstract;
Основное предназначение абстрактных методов быть родона-
чальником иерархии конкретных методов в классах-потомках.
В любом классе содержатся два специальных метода конструк-
тор и деструктор. Эти методы содержатся в классе-родоначальнике
всех остальных классов tObject и, следовательно, наследуются все-
ми потомками. Как и другие методы, они могут быть изменены в
классах-потомках, т.е. перекрыты. В классе tObject и в большинстве
его потомков конструктор и деструктор называются Create и Destroy
соответственно.
Конструкторы предназначены для создания и инициализации объ-
екта. Объект в языке Object Pascal является динамической структурой,
и переменная-объект содержит не сами данные, а ссылку на них.
Конструктор распределяет объект в динамической памяти и присваи-
                                             6
т ельском кла ссе н еоб ход им о использова т ь за резервирова н н ое слово
virtual, а д ля об ъя влен ия д ин а м ического м ет од а – за резервирова н н ое
слово dinamic. В кла ссе-потом ке в за головке за м еща ю щего м ет од а
д олж н о б ыт ь у ка за н о за резервирова н н ое слово override. Н а прим ер:
       type tBase = class
                 procedure Cnt; virtual;
                 end;
                 tStudent = class(tBase)
                 procedure Cnt; override;
                 end;
       var       Obj1 : tBase;
                 Obj2 : tStudent;
       begin
       … … … … … … … … … … … … ..
       Obj1.Cnt;
       Obj2.Cnt;
       … … … … … … … … … … … … ..
       end;
       Е сли б ы м ы за хотели, чт об ы м етод Cnt в кла ссе tBase б ыл д и-
н а м ическим , слово virtual в за головке э          т ой процед у ры след ова ло б ы
за м ен ит ь словом dinamic. Ра зличие м еж д у вирт у а льн ым и и д ин а м иче-
ским и м ет од а м и н евелико и свя за н о с особ ен н ост я м и реа лиза ции их
вызовов. М ож н о ска за т ь, что вирт у а льн ые м ет од ы б олее э       ф ф ект ивн ы
с т очки зрен ия за т ра т врем ен и, а д ин а м ические м етод ы позволя ю т б о-
лее ра цион а льн о использова т ь опера тивн у ю па м я т ь.
       А б ст ра кт н ым и н а зыва ю т ся вирт у а льн ые или д ин а м ические м ет о-
д ы, кот орые опред елен ы в кла ссе, н о н е сод ерж а т н ика ких д ейст вий,
н икогд а н е вызыва ю т ся и об я за т ельн о д олж н ы б ыть переопред елен ы в
кла сса х-потом ка х. Об ъя вля ет ся а б стра кт н ый м ет од при пом ощи за ре-
зервирова н н ого слова abstract, за писа н н ого после слова virtual или
dinamic. Н а прим ер,
                            procedure draw; virtual; abstract;
       Осн овн ое пред н а зн а чен ие а б стра кт н ых м етод ов – б ыт ь род он а -
ча льн иком иера рхии кон кретн ых м етод ов в кла сса х-потом ка х.
       В лю б ом кла ссе сод ерж а т ся д ва специа льн ых м етод а – кон ст ру к-
т ор и д ест ру кт ор. Э ти м ет од ы сод ерж а тся в кла ссе-род он а ча льн ике
всех ост а льн ых кла ссов – tObject и, след ова т ельн о, н а след у ю т ся все-
м и потом ка м и. К а к и д ру гие м ет од ы, он и м огу т б ыть изм ен ен ы в
кла сса х-потом ка х, т .е. перекрыт ы. В кла ссе tObject и в б ольш ин ст ве
его потом ков кон ст ру кт ор и д ест ру кт ор н а зыва ю т ся Create и Destroy
соот вет ст вен н о.
       К он ст ру кт оры пред н а зн а чен ы д ля созд а н ия и ин ициа лиза ции об ъ-
ект а . Об ъект в я зыке Object Pascal я вля ет ся д ин а м ической стру кт у рой,
и перем ен н а я -об ъект сод ерж ит н е са м и д а н н ые, а ссылку н а н их.
К он стру кт ор ра спред еля ет об ъект в д ин а м ической па м я т и и присва и-