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.
...
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: 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} 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.