User Tools

Site Tools


appunti3s:data_hiding

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
appunti3s:data_hiding [2018/05/09 00:01] – [Esempio] profproappunti3s:data_hiding [2020/06/08 22:19] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== Incapsulamento delle funzioni======
 +L'incapsulamento (encapsulation) è un concetto che spiega come, riducendo l'accoppiamento del codice nel programma, si riesce ad aumentare la facilità di manutenzione e di riutilizzo. Per esempio, facendo in modo che alcune parti del codice possano essere utilizzabili solo da altre parti del codice.
 +===== Data hiding (come esempio di incapsulamento) =====
 +Con il termine //data hiding//, si intende un caso particolare di 'incapsulamento', in cui l'isolamento del codice si può ottenere anche diminuendo la visibilità delle variabili. Il data hiding essere realizzato usando le classi, infatti con esse si può usare lo specificatore di accesso //private//.
 +Nel linguaggio C++ lo specificatore di accesso di default è private ( ad eccezione delle //struct// ).
  
 +===== Specificatori di accesso =====
 +Esistono tre //specificatori di accesso//: 
 +  * //public//
 +  * //protected//
 +  * //private//
 +Lo specificatore di accesso è seguito da //due punti// (:) e modifica la visibilità di tutto quello che segue.
 +==== public ====
 +Quando un elemento viene dichiarato usando //public//, significa che vi si può accedere da qualsiasi parte del codice.
 +==== private ==== 
 +Quando un elemento viene dichiarato usando //private//, significa che vi si può accedere solo all'interno della struttura/classe dove è stato dichiarato.
 +==== protected ====
 +È usato nella composizione tra classi, come nell'[[appunti3s:ereditarietà]]
 +===== Esempio =====
 +
 +Come nell'esempio {{appunti3s:contocorrente1.zip}}, la classe ContoCorrente possiede il membro //private// mSaldo: questo significa che è visibile solo dalle funzioni membro della classe e non da altri oggetti. Chiunque voglia conoscere il contenuto di mSaldo, o voglia modificarlo, deve farlo usando le funzioni membro di ContoCorrente. 
 +A loro volta, anche alcune di queste funzioni saranno //private//, ma almeno una di loro sarà //public//, per permettere di utilizzare i dati contenuti nella classe.