Difference between revisions of "Property/fi"

From Lazarus wiki
Jump to navigationJump to search
(Created page with "{{Property}} Varattu sana '''property''' on osa olio-ohjelmointia. Sillä voidaan sallia eri tasojen (lukea, lukea / kirjoittaa jne.) ulkopuolelta pääsy...")
 
Line 1: Line 1:
 
{{Property}}
 
{{Property}}
  
[[Reserved words|Varattu sana]] '''property''' on osa olio-ohjelmointia.  
+
[[Reserved words|Varattu sana]] <syntaxhighlight lang="pascal" enclose="none">property</syntaxhighlight> on osa [[object-oriented programming/fi|olio-ohjelmointia]].  
 
Sillä voidaan sallia eri tasojen (lukea, lukea / kirjoittaa jne.) ulkopuolelta pääsy käsiksi [[Class|luokan]] sisällä oleviin [[Variable|muuttujiin]].
 
Sillä voidaan sallia eri tasojen (lukea, lukea / kirjoittaa jne.) ulkopuolelta pääsy käsiksi [[Class|luokan]] sisällä oleviin [[Variable|muuttujiin]].
  
 
== Esimerkki ==
 
== Esimerkki ==
<source>
+
<syntaxhighlight lang="pascal">
 
type
 
type
 
   TCar = class
 
   TCar = class
Line 40: Line 40:
 
   end;
 
   end;
 
end;
 
end;
</source>
+
</syntaxhighlight>
  
 
== Oliot ominaisuuksina ==
 
== Oliot ominaisuuksina ==
 
Olioita voidaan liittää myös ominaisuuksina. Esim.:
 
Olioita voidaan liittää myös ominaisuuksina. Esim.:
<source>
+
<syntaxhighlight lang="pascal">
 
type
 
type
 
   TEngine = class
 
   TEngine = class
Line 58: Line 58:
 
   // (esim. constructor ja destructor)
 
   // (esim. constructor ja destructor)
 
   // ...
 
   // ...
</source>
+
</syntaxhighlight>
  
 
Lue käyttöoikeus täällä tarkoittaa jotain, joka ei välttämättä ole ilmeinen ensi silmäyksellä. Ulkopuolella oleva koodi on lukenut vain pääsyn kyseiselle TEngine-objektille osoittimelle / viittaukselle, mikä tarkoittaa, ettei se pysty luomaan tai tuhoamaan objektia.
 
Lue käyttöoikeus täällä tarkoittaa jotain, joka ei välttämättä ole ilmeinen ensi silmäyksellä. Ulkopuolella oleva koodi on lukenut vain pääsyn kyseiselle TEngine-objektille osoittimelle / viittaukselle, mikä tarkoittaa, ettei se pysty luomaan tai tuhoamaan objektia.
Line 67: Line 67:
 
Jos halutaan antaa kutsukoodille vastuu luoda ja tuhota olio, voidaan myös antaa kirjoitusoikeus esim.  
 
Jos halutaan antaa kutsukoodille vastuu luoda ja tuhota olio, voidaan myös antaa kirjoitusoikeus esim.  
  
<source>
+
<syntaxhighlight lang="pascal">
 
...
 
...
 
   public
 
   public
 
     property Engine: TEngine read FMyEngine write FMyEngine;
 
     property Engine: TEngine read FMyEngine write FMyEngine;
 
...
 
...
</source>
+
</syntaxhighlight>
  
 
== Katso myös ==
 
== Katso myös ==
 
* [https://www.freepascal.org/docs-html/ref/refse27.html property in the Official FPC documentation]
 
* [https://www.freepascal.org/docs-html/ref/refse27.html property in the Official FPC documentation]

Revision as of 20:21, 19 June 2019

Deutsch (de) English (en) suomi (fi) français (fr)

Varattu sana property on osa olio-ohjelmointia. Sillä voidaan sallia eri tasojen (lukea, lukea / kirjoittaa jne.) ulkopuolelta pääsy käsiksi luokan sisällä oleviin muuttujiin.

Esimerkki

type
  TCar = class
  private
    FColor: string;
    FBuildYear: integer;
    procedure SetColor(CarColor: string);
  public
    property Color: string read FColor write SetColor; 
     // Lukee suoraan FColor-muuttujaa;
     // Ohjaa kirjoittamisen SetColor-aliohjelmaan, joka muuttaa sitten FColor-muuttujaa.
     // Toinen vaihtoehto voisi olla vain "write FColor" joka kirjoittaisi suoraan FColor-muuttujaan ..
  end;

procedure TCar.SetColor(CarColor: string);
begin
  // Myös muita asioita voidaan tehdä täällä , kuten "taloudenhoito", ilmoittaa muille muutoksista,
  // validointi muihin muuttujiin, kirjautumiseen, etc -eg
  if CarColor='Pink' then
    ShowMessage('Note: pink is not a very common color for a car.');
  FColor:=CarColor;
end;

procedure PropertyExample();   // Näyttää, miten asetetaan property ja luetaan se
var
  MyCar: TCar;                 // Pitää TCar-esiintymää;  jota käytetään esimerkissä subAuto
begin
  MyCar := TCar.Create;        // Luo olion
  try
    MyCar.Color:='Green';      // Asettaa color property... joka kutsuu setcolor aliohjelmaa... joka asettaa kyseisen olion FColor muuttujan
    showmessage(MyCar.Color);  // Nyt luetaan olion property uudestaan... pitäisi näyttää Green
  finally
    MyCar.Free;                // Vapauttaa olion muistin, riippumatta siitä, mitä poikkeuksia muussa koodissa tapahtui
  end;
end;

Oliot ominaisuuksina

Olioita voidaan liittää myös ominaisuuksina. Esim.:

type
  TEngine = class
  ...
  TCar = class
  private
    FMyEngine: TEngine;
  public
    property Engine: TEngine read FMyEngine;
  implementation
  // ...
  // Tähän koodi TCar, joka luo ja vapauttaa FMyEngine tarpeen mukaan
  // (esim. constructor ja destructor)
  // ...

Lue käyttöoikeus täällä tarkoittaa jotain, joka ei välttämättä ole ilmeinen ensi silmäyksellä. Ulkopuolella oleva koodi on lukenut vain pääsyn kyseiselle TEngine-objektille osoittimelle / viittaukselle, mikä tarkoittaa, ettei se pysty luomaan tai tuhoamaan objektia.

Kuitenkin se voi käyttää tätä lukemisominaisuutta päästä käsiksi FMyEngine-objektin ominaisuuksiin ja muuttaa niitä.


Jos halutaan antaa kutsukoodille vastuu luoda ja tuhota olio, voidaan myös antaa kirjoitusoikeus esim.

...
  public
    property Engine: TEngine read FMyEngine write FMyEngine;
...

Katso myös