93 lines
3.7 KiB
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>
|
|
Person =<b> class<br>
|
|
private</b><br>
|
|
nm: <b>string</b>;<br>
|
|
ag: integer;<br>
|
|
<b> public</b><br>
|
|
<b>constructor</b> Create(name: <b>
|
|
string</b>; age: integer);<br>
|
|
<b>end</b>;<br>
|
|
...<br>
|
|
<b>constructor</b> Person.Create(name: <b>
|
|
string</b>; age: integer);<br>
|
|
<b>begin</b><br>
|
|
nm := name;<br>
|
|
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> Person =<b> class<br></b>
|
|
<b>constructor</b> (name: <b>string</b>; age: integer);<br><b>
|
|
begin</b><br>
|
|
nm := name;<br>
|
|
ag := age;<br>
|
|
<b> end</b>;<br>
|
|
<b>end</b>;</code></p>
|
|
</blockquote>
|
|
<p><span lang="ru">Â ñèëó îñîáåííîñòåé ðåàëèçàöèè âûçîâîâ êîíñòðóêòîðîâ â </span>
|
|
.NET <span lang="ru">â </span><b>PascalABC.NET</b> <span lang="ru">âñåãäà
|
|
ñîçäàåòñÿ êîíñòðóêòîð áåç ïàðàìåòðîâ (íåçàâèñèìî îò òîãî, îïðåäåëåí ëè äðóãîé
|
|
êîíñòðóêòîð). Ýòîò êîíñòðóêòîð èíèöèàëèçèðóåò âñå ïîëÿ íóëåâûìè çíà÷åíèÿìè
|
|
(ñòðîêîâûå ïîëÿ - ïóñòûìè ñòðîêàìè, ëîãè÷åñêèå - çíà÷åíèåì </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> ...<br><b>end</b>;</code></p>
|
|
</blockquote>
|
|
<p>Ïîñêîëüêó â <b>PascalABC.NET</b>
|
|
ïàìÿòü óïðàâëÿåòñÿ ñáîðùèêîì ìóñîðà, äåñòðóêòîð â <b>PascalABC.NET</b>
|
|
íå èãðàåò íèêàêîé ðîëè è ïðåäñòàâëÿåò ñîáîé îáû÷íóþ
|
|
ïðîöåäóðó-ìåòîä.</p>
|
|
</body>
|
|
|
|
</html> |