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

...

Enkapsulointi piilottaa toteutukseen liittyvät muuttujat ja metodit muiden luokkien näkyvistä. Enkapsuloitu luokka tarjoaa rajapinnan (interface), jolla luokkaa voidaan käyttää. Enkapsuloinnin avulla voidaan luokan 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 Block
class CElain
{
private:public:
    CElain();   // privaatti, vain luokan sisällä voidaan muuttaa
 char m_Nimi[100]; // Eläimen nimi
 float m_Massa; // Eläimen massa, paino
 void TulostaNimi(                      // Muodostin
    void AsetaNimi(char Nimi[]);      // TulostaaAsettaa ruudulle eläimen nimen
    void AsetaMassa(float TulostaMassa(Massa);     // TulostaaAsettaa ruudulle eläimen massan
public:    // julkinen, kaikki voi kutsua
 CElain(char Nimi[], float Massa);   // Muodostin, parametreina Nimi ja Massa
 bool AsetaNimi(char Nimi[]);// Asettaavoid Tulosta();

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

    void TulostaNimi();               // Tulostaa ruudulle eläimen nimen
 bool AsetaMassa(float Massa); // Asettaa   void TulostaMassa();              // Tulostaa ruudulle eläimen massan
 void Tulosta();
};
Code Block
int main()
{
    CElain kissa("ei nimeä", 0.0);
;

    kissa.Tulosta();
}

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