...
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 { public: // julkinen, kaikki voi kutsua CElain(); CElain(char Nimi[], float Massa); // Muodostin, parametreina Nimi ja// MassaMuodostin boolvoid AsetaNimi(char Nimi[]); // Asettaa eläimen nimen boolvoid AsetaMassa(float Massa); // Asettaa eläimen massan void Tulosta(); 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 }; |
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.