Sign in Join
Wiki copytemporary

Property/fi: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Property/fi

OldNewLine
1+[[Reserved words|Varattu sana]] `property` 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]].
2+
3+## Esimerkki
4+
5+``` pascal
6+type
7+ TCar = class
8+ private
9+ FColor: string;
10+ FBuildYear: integer;
11+ procedure SetColor(CarColor: string);
12+ public
13+ property Color: string read FColor write SetColor;
14+ // Lukee suoraan FColor-muuttujaa;
15+ // Ohjaa kirjoittamisen SetColor-aliohjelmaan, joka muuttaa sitten FColor-muuttujaa.
16+ // Toinen vaihtoehto voisi olla vain "write FColor" joka kirjoittaisi suoraan FColor-muuttujaan ..
17+ end;
18+
19+procedure TCar.SetColor(CarColor: string);
20+begin
21+ // Myös muita asioita voidaan tehdä täällä , kuten "taloudenhoito", ilmoittaa muille muutoksista,
22+ // validointi muihin muuttujiin, kirjautumiseen, etc -eg
23+ if CarColor='Pink' then
24+ ShowMessage('Note: pink is not a very common color for a car.');
25+ FColor:=CarColor;
26+end;
27+
28+procedure PropertyExample(); // Näyttää, miten asetetaan property ja luetaan se
29+var
30+ MyCar: TCar; // Pitää TCar-esiintymää; jota käytetään esimerkissä subAuto
31+begin
32+ MyCar := TCar.Create; // Luo olion
33+ try
34+ MyCar.Color:='Green'; // Asettaa color property... joka kutsuu setcolor aliohjelmaa... joka asettaa kyseisen olion FColor muuttujan
35+ showmessage(MyCar.Color); // Nyt luetaan olion property uudestaan... pitäisi näyttää Green
36+ finally
37+ MyCar.Free; // Vapauttaa olion muistin, riippumatta siitä, mitä poikkeuksia muussa koodissa tapahtui
38+ end;
39+end;
40+```
41+
42+## Oliot ominaisuuksina
43+
44+Olioita voidaan liittää myös ominaisuuksina. Esim.:
45+
46+``` pascal
47+type
48+ TEngine = class
49+ ...
50+ TCar = class
51+ private
52+ FMyEngine: TEngine;
53+ public
54+ property Engine: TEngine read FMyEngine;
55+ implementation
56+ // ...
57+ // Tähän koodi TCar, joka luo ja vapauttaa FMyEngine tarpeen mukaan
58+ // (esim. constructor ja destructor)
59+ // ...
60+```
61+
62+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.
63+
64+Kuitenkin se voi käyttää tätä lukemisominaisuutta päästä käsiksi FMyEngine-objektin ominaisuuksiin ja muuttaa niitä.
65+
66+Jos halutaan antaa kutsukoodille vastuu luoda ja tuhota olio, voidaan myös antaa kirjoitusoikeus esim.
67+
68+``` pascal
69+...
70+ public
71+ property Engine: TEngine read FMyEngine write FMyEngine;
72+...
73+```
74+
75+## Katso myös
76+
77+- [property in the Official FPC documentation](https://www.freepascal.org/docs-html/ref/refse27.html)
78+
79+---
80+*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](/wiki-contact).*

Back to history