Property/fi
Deutsch · English · Français · Suomi
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
From the Free Pascal wiki, page "Property/fi", as it stood on 2022-08-06 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
