Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0
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}

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. Image Removed Image Removed

Esimerkki 1. Koostuminen.

Code Block
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

...

.

!koostuminen_esim1.png!
Kuva 1. UML-luokkakaavio.

h3.

...

 Koostettujen luokkien käyttö

...



Koostettuja luokkien metodeja kutsutaan kuten muitakin luokkien, eli olioiden kautta. Eli: *olion_nimi.metodin_nimi();

...

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 2. UML-luokkakaavio.