Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

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 Added Image Added

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.

...

Image Added
Kuva 1.

...

UML-luokkakaavio.

...

Koostettujen

...

luokkien

...

käyttö

...

Koostettuja

...

luokkien

...

metodeja

...

kutsutaan

...

kuten

...

muitakin

...

luokkien,

...

eli

...

olioiden

...

kautta.

...

Eli:

...

olion_nimi.metodin_nimi();

Anchor
esim2
esim2

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 

Image Added
Kuva 2.

...

UML-luokkakaavio.