Sign in Join
Wiki copytemporary

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

pascal
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.:

pascal
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.

pascal
...
  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.

Revision 1, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.