A seconda di chi sta insegnando quel concetto, l'incapsulamento può avere così tante definizioni che è essenzialmente una parola d'ordine da definire con decine di altre parole d'ordine, a volte anche andando alla ridicola affermazione come la tua "" Ho letto che i membri della classe dovrebbero essere privati e qualsiasi accesso a questi membri privati deve avvenire attraverso metodi getter e setter che sono pubblici ".
Il bisogno di incapsulamento si verifica tipicamente quando rappresenti un oggetto aggregando un numero di componenti i cui valori sono reciprocamente correlati, e quindi non possono essere modificati l'un l'altro in modo indipendente, senza rendere l'oggetto non valido o senza tracce o senza senso o senza pantalone o come si desidera chiamarlo.
In tal caso tu -an solo tu- assumi la responsabilità di gestire quei sottovalori, rendendo questi componenti nascosti (o inaccessibili ... è molto una questione su come funziona la lingua), e fornendo all'aggregato metodi pubblici che modificano i valori interiori correttamente.
operativa -Editazione-
Tutto il resto è solo "costruzione eccessiva del purismo" che non implementa realmente nulla, a parte ... soddisfare i maestri zeloti dell'OOP.
operativa -Editazione-
PS: Devo scusarmi con tutti gli insegnanti OOP, ma 30 anni di esperienza nel settore mi fanno davvero meravigliare dei danni di un certo modo "acritico" di insegnare " regole " piuttosto che concetti e relazioni tra di loro!
Puoi downvotare, se vuoi, ma mi piacerebbe vedere una dimostrazione pratica che ho sbagliato!
Il mondo è pieno di libri (davvero pessimi) che insegnano cose cattive come
class A
{
private:
int x;
public:
void set_x(int x_) { x=x_; }
int get_x() const { return x; }
};
Questo non ha incapsulato nulla, poiché ti consente di fare tutto ciò che vuoi con x
.