Cześć przykładowo mam taki kod:
class foo
{
private:
int a;
public:
void setValue(int v) { a = v;}
int getValue() {return a;}
};
Zastosowanie tutaj zmiennej jako prywatnej i funkcji operującej na niej jako publicznej to hermetyzacja ?
Ponadto co mi da zrobienie zmiennej "a" jako prywatnej, skoro w każdej chwili mogę ją zmienić poprzez publiczną metodę setValue.
Przykładowo:
// tutaj nie mam dostępu do zmiennej a:
foo obiekt;
obiekt.a = 2; // blad;
obiekt.setValue(2); // teraz a = 2;
Jaki jest sens stosowanie setValue skoro ta zmienna "a" i tak została zmieniona na 2 tak jak chciałem mimo braku dostępu do niej. W zasadzie używając funkcji setValue nie ma różnicy wtedy czy "a" jest prywatne czy publiczne. Jeśli chciałbym użyć "a" w wyrażeniu to:
int wynik = obiekt.a * 2 + obiekt.a / 3; // błąd
int wynik = obiekt.getValue() * 2 + obiekt.getValue() / 3; // dobrze
Tylko więcej pisania :P