Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0
Wiki Markup
h2. Enkapsulointi

Enkapsulointi piilottaa toteutukseen liittyvät muuttujat ja metodit muiden luokkien näkyvistä. Enkapsuloitu luokka tarjoaa rajapinnan 

Enkapsulointi

...

(interface), jolla luokkaa voidaan käyttää. Enkapsuloinnin avulla voidaan luokan toteutusta muuttaa ilman, että sitä käyttävät tahot joutuvat muuttamaan omaa koodiaan. Yleisesti kannattaa piilottaa kaikki sellainen, johon muiden ei tarvitse päästä "kiinni". Näin estetään vahingossa muuttamasta sellaisten muuttujien arvoja, joita on tarkoitus käyttä vain luokan sisäisesti.

...




Esimerkiksi CElain-luokka:

...



{code
}
class CElain
{
public:
    CElain();                         // Muodostin
    void AsetaNimi(char Nimi[]);      // Asettaa eläimen nimen
    void AsetaMassa(float Massa);     // Asettaa eläimen massan
    void Tulosta();

private:
    char m_Nimi[100];                 // Eläimen nimi
    float m_Massa;                    // Eläimen massa, paino

    void TulostaNimi();               // Tulostaa ruudulle eläimen nimen
    void TulostaMassa();              // Tulostaa ruudulle eläimen massan
};
Code Block

{code}

{code}
int main()
{
    CElain kissa;

    kissa.Tulosta();
}
{code}

Yllä olevassa esimerkissä _Tulosta()_\-funktio on ainoa julkinen funktio kyselyyn. Jatkossa saatetaan haluta muuttaa luokkaa siten, että siihen lisätään vaikka seuraavat ominaisuudet: väri, säkäkorkeus, elinalueet. Näille kirjoitetaan _TulostaXXX()_\-funktiot. Koska CElain-luokka tarjoaa yhden julkisen _Tulosta()_\-metodin, on helppo tehtävä lisätä nämä uudet ominaisuudet tulostettaviksi.