pascalabcnet/PABCNetHelp/LangGuide/Classes/constrdestr.html

93 lines
3.7 KiB
HTML

<html>
<head>
<object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
<param name="Keyword" value="constructor">
<param name="Keyword" value="destructor">
<param name="Keyword" value="Create">
<param name="Keyword" value="Destroy">
<param name="Keyword" value="Êîíñòðóêòîð">
<param name="Keyword" value="Äåñòðóêòîð">
</object>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title></title>
<link rel="StyleSheet" href="../../default.css">
</head>
<body>
<H1>Êîíñòðóêòîð<span lang="ru">û</span> </H1>
<p>Îáúåêòû ñîçäàþòñÿ ñ ïîìîùüþ ñïåöèàëüíûõ
ìåòîäîâ, íàçûâàåìûõ <b><font color="#FF0000"> <i>êîíñòðóêòîðàìè</i></font></b>. </p>
<p>Êîíñòðóêòîð ïðåäñòàâëÿåò ñîáîé ôóíêöèþ, ñîçäàþùóþ îáúåêò â
äèíàìè÷åñêîé ïàìÿòè, èíèöèàëèçèðóþùóþ åãî ïîëÿ è âîçâðàùàþùóþ óêàçàòåëü íà
ñîçäàííûé îáúåêò. Ýòîò óêàçàòåëü îáû÷íî ñðàçó ïðèñâàèâàåòñÿ ïåðåìåííîé
òèïà êëàññ. Ïðè îïèñàíèè êîíñòðóêòîðà âìåñòî ñëóæåáíîãî ñëîâà <code><b>
function</b></code> èñïîëüçóåòñÿ ñëóæåáíîå ñëîâî <code>
<b>constructor</b></code>. Êðîìå òîãî, äëÿ êîíñòðóêòîðà íå
óêàçûâàåòñÿ òèï âîçâðàùàåìîãî çíà÷åíèÿ. </p>
<p>Íàïðèìåð:</p>
<blockquote>
<p><code><b>type</b> <br>
&nbsp; Person =<b> class<br>
&nbsp; private</b><br>
&nbsp;&nbsp;&nbsp; nm: <b>string</b>;<br>
&nbsp;&nbsp;&nbsp; ag: integer;<br>
<b>&nbsp; public</b><br>
&nbsp;&nbsp;&nbsp; <b>constructor</b> Create(name: <b>
string</b>; age: integer);<br>
&nbsp; <b>end</b>;<br>
...<br>
<b>constructor</b> Person.Create(name: <b>
string</b>; age: integer);<br>
<b>begin</b><br>
&nbsp; nm := name;<br>
&nbsp; ag := age;<br>
<b>end</b>;</code></p>
</blockquote>
<p>Â <b>PascalABC.NET</b> êîíñòðóêòîð
âñåãäà äîëæåí èìåòü èìÿ <code>Create</code>. Ïðè îïèñàíèè
êîíñòðóêòîðà âíóòðè êëàññà ìîæíî îïóñêàòü åãî èìÿ:</p>
<blockquote>
<p><code><b>type</b> <br>&nbsp; Person =<b> class<br></b>&nbsp;&nbsp;&nbsp;
<b>constructor</b> (name: <b>string</b>; age: integer);<br><b>
&nbsp;&nbsp;&nbsp; begin</b><br>
&nbsp;&nbsp;&nbsp; &nbsp; nm := name;<br>
&nbsp;&nbsp;&nbsp; &nbsp; ag := age;<br>
<b>&nbsp;&nbsp;&nbsp; end</b>;<br>
&nbsp; <b>end</b>;</code></p>
</blockquote>
<p><span lang="ru">Â ñèëó îñîáåííîñòåé ðåàëèçàöèè âûçîâîâ êîíñòðóêòîðîâ â </span>
.NET <span lang="ru">â </span><b>PascalABC.NET</b> <span lang="ru">âñåãäà
ñîçäàåòñÿ êîíñòðóêòîð áåç ïàðàìåòðîâ (íåçàâèñèìî îò òîãî, îïðåäåëåí ëè äðóãîé
êîíñòðóêòîð). Ýòîò êîíñòðóêòîð èíèöèàëèçèðóåò âñå ïîëÿ íóëåâûìè çíà÷åíèÿìè
(ñòðîêîâûå ïîëÿ - ïóñòûìè ñòðîêàìè, ëîãè÷åñêèå&nbsp; - çíà÷åíèåì </span>False)<span lang="ru">.</span></p>
<p>Äëÿ âûçîâà êîíñòðóêòîðà ìîæíî èñïîëüçîâàòü äâà ñïîñîáà.</p>
<p><b>1 ñïîñîá.</b> Â ñòèëå Object Pascal.</p>
<p>Äëÿ âûçîâà êîíñòðóêòîðà ñëåäóåò óêàçàòü èìÿ êëàññà, çà êîòîðûì ñëåäóåò
òî÷êà-ðàçäåëèòåëü, èìÿ êîíñòðóêòîðà è ñïèñîê ïàðàìåòðîâ. Íàïðèìåð:</p>
<blockquote>
<p><code><b>var</b> p: Person;<br>
p := Person.Create('Èâàíîâ',20);</code></p>
</blockquote>
<p><b>2</b><b> ñïîñîá.</b> Ñ ïîìîùüþ îïåðàöèè <code>new</code> - â
ñòèëå C# (ïðåäïî÷òèòåëüíûé).</p>
<blockquote>
<p><code><b>var</b> p: Person;<br>
p := new Person('Èâàíîâ',20);</code></p>
</blockquote>
<p>Äåñòðóêòîð â Object Pascal -
ñïåöèàëüíàÿ ïðîöåäóðà, óíè÷òîæàþùàÿ îáúåêò è
îñâîáîæäàþùàÿ äèíàìè÷åñêóþ ïàìÿòü, êîòîðóþ ýòîò îáúåêò
çàíèìàë. Ïðè îïèñàíèè äåñòðóêòîðà âìåñòî ñëóæåáíîãî ñëîâà <b><code>procedure</code></b>
èñïîëüçóåòñÿ ñëóæåáíîå ñëîâî <code><b>destructor</b></code>.</p>
<p>Íàïðèìåð:</p>
<blockquote>
<p><code><b>destructor</b> Destroy;<br><b>begin</b><br>&nbsp; ...<br><b>end</b>;</code></p>
</blockquote>
<p>Ïîñêîëüêó â <b>PascalABC.NET</b>
ïàìÿòü óïðàâëÿåòñÿ ñáîðùèêîì ìóñîðà, äåñòðóêòîð â <b>PascalABC.NET</b>
íå èãðàåò íèêàêîé ðîëè è ïðåäñòàâëÿåò ñîáîé îáû÷íóþ
ïðîöåäóðó-ìåòîä.</p>
</body>
</html>