You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Enkapsulointi

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 toteutusta muuttaa ilman, että sitä käyttävät tahot joutuvat muuttamaan omaa koodiaan.

Esimerkiksi CElain-luokka:

class CElain
{
private:   // privaatti, vain luokan sisällä voidaan muuttaa
 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
public:   // julkinen, kaikki voi kutsua
 CElain(char Nimi[], float Massa);   // Muodostin, parametreina Nimi ja Massa
 bool AsetaNimi(char Nimi[]);// Asettaa eläimen nimen
 bool AsetaMassa(float Massa); // Asettaa eläimen massan
 void Tulosta();
};

int main()
{
  CElain kissa("ei nimeä", 0.0);
  kissa.Tulosta();
}

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

  • No labels
You must log in to comment.