Çàî÷íîå äèñòàíöèîííîå îáðàçîâàíèå ñ ïîëó÷åíèåì ãîñóäàðñòâåííîãî äèïëîìà ÷åðåç Internet










Ïîëó÷èòü èíôîðìàöèþ î ïîñòóïëåíèè
 
Ãëàâíàÿ Íîâîñòè Êàðòà ñàéòà Ôîòîàëüáîì Ãîñòåâàÿ êíèãà Êîíòàêòû

 

Êîíñòðóêòîðû è äåñòðóêòîðû

Ìåòîäû, êîòîðûå ïðåäíàçíà÷åíû äëÿ ñîçäàíèÿ è óäàëåíèÿ îáúåêòîâ íàçûâàþòñÿ êîíñòðóêòîðàìè è äåñòðóêòîðàìè ñîîòâåòñòâåííî. Îïèñàíèå äàííûõ ìåòîäîâ îòëè÷àåòñÿ îò îáû÷íûõ òåì, ÷òî â èõ çàãîëîâêàõ ñòîÿò êëþ÷åâûå ñëîâà constructor è destructor.  êà÷åñòâå èìåí êîíñòðóêòîðîâ è äåñòðóêòîðîâ â áàçîâîì êëàññå TObject è ìíîãèõ äðóãèõ êëàññàõ èñïîëüçóþòñÿ èìåíà Create è Destroy.

Ïðåæäå ÷åì îáðàùàòüñÿ ê ýëåìåíòàì îáúåêòà, åãî íóæíî ñîçäàòü ñ ïîìîùüþ êîíñòðóêòîðà. Íàïðèìåð: ObjectA:=TOwnClass.Create;

Êîíñòðóêòîð âûäåëÿåò ïàìÿòü äëÿ íîâîãî îáúåêòà, çàäàåò íóëåâûå çíà÷åíèÿ äëÿ ïîðÿäêîâûõ ïîëåé, çíà÷åíèå nil – äëÿ óêàçàòåëåé è ïîëåé êëàññîâ, ñòðîêîâûå ïîëÿ óñòàíàâëèâàåò ïóñòûìè, à òàêæå âîçâðàùàåò óêàçàòåëü íà ñîçäàííûé îáúåêò.

Êëàññû îáúåêòîâ îïðåäåëÿþòñÿ â ñåêöèè type ãëîáàëüíîãî áëîêà. Îïèñàíèå êëàññà íà÷èíàåòñÿ ñ êëþ÷åâîãî ñëîâà class è çàêàí÷èâàåòñÿ êëþ÷åâûì ñëîâîì end.

×òîáû îò îïèñàíèÿ êëàññà ïåðåéòè ê îáúåêòó, ñëåäóåò âûïîëíèòü ñîîòâåòñòâóþùåå îáúÿâëåíèå â ðàçäåëå var: Var math:TMatematica;

Ïåðåìåííàÿ math – ýòî ññûëêà íà ýêçåìïëÿð (îáúåêò â ïàìÿòè), êîòîðîãî ôèçè÷åñêè åùå íå ñóùåñòâóåò. ×òîáû ñêîíñòðóèðîâàòü îáúåêò (âûäåëèòü ïàìÿòü äëÿ ýêçåìïëÿðà) êëàññà TMatematica è ñâÿçàòü ñ íèì ïåðåìåííóþ math, íóæíî â òåêñòå ïðîãðàììû ïîìåñòèòü ñëåäóþùèé îïåðàòîð: math:= TMatematica.Create;

Create – ýòî êîíñòðóêòîð îáúåêòà; îí âñåãäà ïðèñóòñòâóåò â êëàññå è ñëóæèò äëÿ ñîçäàíèÿ è èíèöèàëèçàöèè ýêçåìïëÿðîâ. Ïðè ñîçäàíèè îáúåêòà â ïàìÿòè âûäåëÿåòñÿ ìåñòî òîëüêî äëÿ åãî ïîëåé. Ìåòîäû, êàê è îáû÷íûå ïðîöåäóðû è ôóíêöèè, ïîìåùàþòñÿ â îáëàñòü êîäà ïðîãðàììû; îíè ìîãóò ðàáîòàòü ñ ëþáûìè ýêçåìïëÿðàìè ñâîåãî êëàññà è íå äóáëèðóþòñÿ â ïàìÿòè.

Ïîñëå ñîçäàíèÿ îáúåêò ìîæíî èñïîëüçîâàòü â ïðîãðàììå: ïîëó÷àòü è óñòàíàâëèâàòü çíà÷åíèÿ åãî ïîëåé, âûçûâàòü åãî ìåòîäû. Äîñòóï ê ïîëÿì è ìåòîäàì îáúåêòà ïðîèñõîäèò ñ ïîìîùüþ èìåí, íàïðèìåð: math.x1;

Êðîìå òîãî, êàê è ïðè ðàáîòå ñ çàïèñÿìè, äîïóñòèìî èñïîëüçîâàíèå îïåðàòîðà with, íàïðèìåð:

with math do

x1;

Åñëè îáúåêò ñòàíîâèòñÿ íåíóæíûì, îí äîëæåí áûòü óäàëåí âûçîâîì ñïåöèàëüíîãî ìåòîäà Destroy (îñâîáîæäåíèå ïàìÿòè, çàíèìàåìîé îáúåêòîì), íàïðèìåð: math.Destroy;

Destroy – ýòî äåñòðóêòîð îáúåêòà; îí ïðèñóòñòâóåò â êëàññå íàðÿäó ñ êîíñòðóêòîðîì è ñëóæèò äëÿ óäàëåíèÿ îáúåêòà èç äèíàìè÷åñêîé ïàìÿòè. Ïîñëå âûçîâà äåñòðóêòîðà ïåðåìåííàÿ math ñòàíîâèòñÿ íåñâÿçàííîé è íå äîëæíà èñïîëüçîâàòüñÿ äëÿ äîñòóïà ê ïîëÿì è ìåòîäàì óæå íåñóùåñòâóþùåãî îáúåêòà. ×òîáû îòëè÷àòü â ïðîãðàììå ñâÿçàííûå îáúåêòíûå ïåðåìåííûå îò íåñâÿçàííûõ, ïîñëåäíèå ñëåäóåò èíèöèàëèçèðîâàòü çíà÷åíèåì nil.

Âûçîâ äåñòðóêòîðà äëÿ íåñóùåñòâóþùèõ îáúåêòîâ íåäîïóñòèì è ïðè âûïîëíåíèè ïðîãðàììû ïðèâåäåò ê îøèáêå. ×òîáû èçáàâèòü îò ëèøíèõ îøèáîê, â îáúåêòû ââåëè ïðåäîïðåäåëåííûé ìåòîä Free, êîòîðûé ñëåäóåò âûçûâàòü âìåñòî äåñòðóêòîðà. Ìåòîä Free ñàì âûçûâàåò äåñòðóêòîð Destroy, íî òîëüêî â òîì ñëó÷àå, åñëè çíà÷åíèå îáúåêòíîé ïåðåìåííîé íå ðàâíî nil: math.Free;

Ïîñëå óíè÷òîæåíèÿ îáúåêòà ïåðåìåííàÿ math ñîõðàíÿåò ñâîå çíà÷åíèå, ïðîäîëæàÿ ññûëàòüñÿ íà ìåñòî â ïàìÿòè, ãäå îáúåêòà óæå íåò. Åñëè ýòó ïåðåìåííóþ ïðåäïîëàãàåòñÿ åùå èñïîëüçîâàòü, òî æåëàòåëüíî ïðèñâîèòü åé çíà÷åíèå nil, ÷òîáû ïðîãðàììà ìîãëà ïðîâåðèòü, ñóùåñòâóåò îáúåêò èëè íåò. Òàêèì îáðàçîì, íàèáîëåå ïðàâèëüíàÿ ïîñëåäîâàòåëüíîñòü äåéñòâèé ïðè óíè÷òîæåíèè îáúåêòà äîëæíà áûòü ñëåäóþùàÿ:

math.Free;

math:= nil;

Ñ ïîìîùüþ ñòàíäàðòíîé ïðîöåäóðû FreeAndNil ýòî ìîæíî ñäåëàòü ïðîùå è ýëåãàíòíåå:

FreeAndNil(math);



 
     
   
 


Ïðèãëàøàåì ïðèíÿòü ó÷àñòèå â êðóãëîì ñòîëå!
ïîäðîáíåå   >>>
 

Èíñòèòóò Ìåíåäæìåíòà, Ýêîíîìèêè è Èííîâàöèé íà÷èíàåò íàáîð íà êóðñû ïîâûøåíèÿ êâàëèôèêàöèè!
ïîäðîáíåå   >>>
 

Óâàæåìûå ñòóäåíòû ÀÍÎ ÂÏÎ ÈÌÝèÈ!
ïîäðîáíåå   >>>
 

Íà÷èíàåòñÿ íàáîð íà êóðñû ïîâûøåíèÿ êâàëèôèêàöèè!
ïîäðîáíåå   >>>
 

Ïðèãëàøàåì ïðèíÿòü ó÷àñòèå â êîíôåðåíöèÿõ!
ïîäðîáíåå   >>>
 


âñå íîâîñòè...

 


Ðàññûëêè Subscribe.Ru
Ñîâðåìåííîå îáðàçîâàíèå
Ïîäïèñàòüñÿ ïèñüìîì