In termini normali l'incapsulamento è definito come l'avvolgimento di dati e informazioni sotto una singola unità. Nella programmazione orientata agli oggetti, l'incapsulamento è definito come legare insieme i dati e le funzioni che li manipolano.
Consideriamo un esempio di vita reale di incapsulamento, in una società ci sono diverse sezioni come la sezione conti, la sezione finanza, la sezione vendite ecc. La sezione finanza gestisce tutte le transazioni finanziarie e tiene traccia di tutti i dati relativi alla finanza. Allo stesso modo la sezione vendite gestisce tutte le attività relative alle vendite e tiene i registri di tutte le vendite. Ora può verificarsi una situazione in cui per qualche motivo un funzionario della sezione finanziaria ha bisogno di tutti i dati sulle vendite in un particolare mese. In questo caso, non gli è permesso di accedere direttamente ai dati della sezione vendite. Dovrà prima contattare qualche altro funzionario della sezione vendite e poi chiedergli di dare i dati particolari. Questo è ciò che è l'incapsulamento. Qui i dati della sezione vendite e gli impiegati che possono manipolarli sono avvolti sotto un singolo nome "sezione vendite".
L'incapsulamento porta anche all'astrazione dei dati o all'occultamento. Poiché usando l'incapsulamento si nascondono anche i dati. Nell'esempio precedente i dati di qualsiasi sezione come vendite, finanza o conti sono nascosti da qualsiasi altra sezione.
Ruolo degli specificatori di accesso nell'incapsulamento
Come abbiamo visto nell'esempio precedente, gli specificatori di accesso giocano un ruolo importante nell'implementazione dell'incapsulamento in C++. Il processo di implementazione dell'incapsulamento può essere suddiviso in due passi:
- I membri dei dati dovrebbero essere etichettati come privati usando gli specificatori di accesso privato
- La funzione membro che manipola i membri dei dati dovrebbe essere etichettata come pubblica usando lo specificatore di accesso pubblico