Property/fi
│
Deutsch (de) │
English (en) │
suomi (fi) │
français (fr) │
русский (ru) │
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;
...