Koostuminen
Luokan jäsenmuuttujina voi olla myös muita luokkia. Tätä kutsutaan koostumiseksi.
Koostumista voidaan ajatella siten että jos Auto-luokka koostuu neljästä Rengas-luokan oliosta, Kori:sta, Moottori:sta, jne. Kaikki nämä ovat omia luokkiaan, joita voidaan käyttää muissakin yhteyksissä. Kun ne pistetään yhteen, ne muodostavat auton, joka koostuu renkaista, korista, moottorista jne.
Esimerkki 1. Koostuminen.
Code Block |
---|
Wiki Markup |
h2. Koostuminen Luokan jäsenmuuttujina voi olla myös muita luokkia. Tätä kutsutaan koostumiseksi. Koostumista voidaan ajatella siten että jos Auto-luokka koostuu neljästä Rengas-luokan oliosta, Kori:sta, Moottori:sta, jne. Kaikki nämä ovat omia luokkiaan, joita voidaan käyttää muissakin yhteyksissä. Kun ne pistetään yhteen, ne muodostavat auton, joka koostuu renkaista, korista, moottorista jne. !koostuminen.png|border=1! !koostuminen2.png|border=1! h3. Esimerkki 1. Koostuminen. {code} class CProsessori { }; class CRAM { }; class CTietokone { private: CProsessori prossu; // Luodaan prossu-olio CProsessori-luokasta CRAM ram; // Luodaan ram-olio CRAM-luokasta }; {code} |
Tietokone
...
koostuu
...
prosessorista
...
ja
...
emolevystä
...
(
...
+
...
muista
...
komponenteista).
...
CTietokone
...
-luokka
...
siis
...
koostuu
...
CProsessori
...
ja
...
CRAM
...
-luokista.
...
Kuva 1.
...
UML-luokkakaavio.
...
Koostettujen
...
luokkien
...
käyttö
...
Koostettuja
...
luokkien
...
metodeja
...
kutsutaan
...
kuten
...
muitakin
...
luokkien,
...
eli
...
olioiden
...
kautta.
...
Eli:
...
olion_nimi.metodin_nimi();
Anchor | ||||
---|---|---|---|---|
|
Esimerkki 2. Koostettujen olioiden kutsuminen.
Code Block |
---|
* {anchor:esim2} h3. Esimerkki 2. Koostettujen olioiden kutsuminen. {code} class CProsessori { public: int Laske(); }; class CRAM { public: void Talleta(); }; class CTietokone { private: CProsessori prossu; CRAM muisti; public: void Suorita(); }; void CTietokone::Suorita() { prossu.Laske(); muisti.Talleta(); } {code} !koostuminen_esim2.png! Kuva |
Kuva 2.
...
UML-luokkakaavio.