Difference between revisions of "Destructor/fi"

From Lazarus wiki
Jump to navigationJump to search
(Created page with "{{Destructor}} Varattu sana <syntaxhighlight lang="pascal" enclose="none">destructor</syntaxhighlight> kuuluu olio-ohjelmointiin. Purkajaa käytetään v...")
 
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
 
{{Destructor}}
 
{{Destructor}}
  
[[Reserved word/fi|Varattu sana]] <syntaxhighlight lang="pascal" enclose="none">destructor</syntaxhighlight> kuuluu olio-ohjelmointiin.
+
[[Reserved word/fi|Varattu sana]] <syntaxhighlight lang="pascal" inline>destructor</syntaxhighlight> kuuluu [[object-oriented programming/fi|olio-ohjelmointiin]].
 
Purkajaa käytetään vapauttamaan käytetyt resurssit kuten muisti.
 
Purkajaa käytetään vapauttamaan käytetyt resurssit kuten muisti.
 
Purkaja on aina tehtävä siten, että kun muistia vapautetaan niin koko [[Class/fi|luokan]] (olion) käyttämä muisti vapautetaan eikä näin ollen tapahdu muistivuotoa.
 
Purkaja on aina tehtävä siten, että kun muistia vapautetaan niin koko [[Class/fi|luokan]] (olion) käyttämä muisti vapautetaan eikä näin ollen tapahdu muistivuotoa.
  
Olion purkaminen tapahtuu kutsumalla luokan <syntaxhighlight lang="pascal" enclose="none">free</syntaxhighlight> [[Method/fi|metodia]]. <syntaxhighlight lang="pascal" enclose="none">Free</syntaxhighlight>:n kutsuminen aiheuttaa <syntaxhighlight lang="pascal" enclose="none">destroy</syntaxhighlight>-kutsun.  
+
Olion purkaminen tapahtuu kutsumalla luokan <syntaxhighlight lang="pascal" inline>free</syntaxhighlight> [[Method/fi|metodia]]. <syntaxhighlight lang="pascal" inline>Free</syntaxhighlight>:n kutsuminen aiheuttaa <syntaxhighlight lang="pascal" inline>destroy</syntaxhighlight>-kutsun.  
Siinä myös tarkistetaan ettei [[Self/fi|<syntaxhighlight lang="pascal" enclose="none">self</syntaxhighlight>]]-[[Variable/fi|muuttujan]] arvo ole [[Nil/fi|<syntaxhighlight lang="pascal" enclose="none">nil</syntaxhighlight>]].
+
Siinä myös tarkistetaan ettei [[Self/fi|<syntaxhighlight lang="pascal" inline>self</syntaxhighlight>]]-[[Variable/fi|muuttujan]] arvo ole [[Nil/fi|<syntaxhighlight lang="pascal" inline>nil</syntaxhighlight>]].
  
  
 
Esimerkiksi:
 
Esimerkiksi:
  
<syntaxhighlight>
+
<syntaxhighlight lang="pascal">
  
 
program Project1;
 
program Project1;

Latest revision as of 17:27, 6 August 2022

Deutsch (de) English (en) suomi (fi)

Varattu sana destructor kuuluu olio-ohjelmointiin. Purkajaa käytetään vapauttamaan käytetyt resurssit kuten muisti. Purkaja on aina tehtävä siten, että kun muistia vapautetaan niin koko luokan (olion) käyttämä muisti vapautetaan eikä näin ollen tapahdu muistivuotoa.

Olion purkaminen tapahtuu kutsumalla luokan free metodia. Free:n kutsuminen aiheuttaa destroy-kutsun. Siinä myös tarkistetaan ettei self-muuttujan arvo ole nil.


Esimerkiksi:

program Project1;
{$mode objfpc}{$H+}

type

  // luokan määritelmä
  { TClass }

  TClass = Class
    constructor Create;
    destructor Destroy; override; // sallii vanhemman luokan purkajan käytön
  end;

// luokan rakentaja
constructor TClass.Create;
begin
  Writeln('Rakennetaan olio');
end;

// luokan purkaja
destructor TClass.Destroy;
begin
  Writeln('Puretaan olio');
  inherited; // Käyttää myös vanhemman luokan purkajaa
end;

var

// kerrotaan luokan muuttuja
  myclass: TClass;

begin
  myclass:= TClass.Create; // alustaa olion kutsumalla oman luokkaansa rakentajaa
  Writeln ('Jotain koodia ...');
  myclass.Free; // Free kutsuu oman luokan Destroy purkajaa
  Writeln ('Paina jotain näppäintä');
  Readln;
end.