Difference between revisions of "Property/fi"
(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]] | + | [[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 == | ||
− | < | + | <syntaxhighlight lang="pascal"> |
type | type | ||
TCar = class | TCar = class | ||
Line 40: | Line 40: | ||
end; | end; | ||
end; | end; | ||
− | </ | + | </syntaxhighlight> |
== Oliot ominaisuuksina == | == Oliot ominaisuuksina == | ||
Olioita voidaan liittää myös ominaisuuksina. Esim.: | Olioita voidaan liittää myös ominaisuuksina. Esim.: | ||
− | < | + | <syntaxhighlight lang="pascal"> |
type | type | ||
TEngine = class | TEngine = class | ||
Line 58: | Line 58: | ||
// (esim. constructor ja destructor) | // (esim. constructor ja destructor) | ||
// ... | // ... | ||
− | </ | + | </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. | ||
− | < | + | <syntaxhighlight lang="pascal"> |
... | ... | ||
public | public | ||
property Engine: TEngine read FMyEngine write FMyEngine; | property Engine: TEngine read FMyEngine write FMyEngine; | ||
... | ... | ||
− | </ | + | </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;
...