L' information hiding consiste nell'insieme di costrutti sintattici e semantici attraverso i quali è possibile per una classe "nascondere“ alcune informazioni che sono utili solamente allo svolgimento dei suoi compiti, esponendo un’interfaccia, cioè l’insieme di dati (proprietà) e di comportamenti (metodi) che sono funzionali al resto del programma.
L'information hiding sta alla base dell'Incapsulamento.
L’incapsulamento è di fondamentale importanza per la programmazione ad oggetti, dato che consente ad una classe di acquisire le proprietà di robustezza, indipendenza e riusabilità.
La filosofia alla base dell’incapsulamento si fonda sul controllo dell’accesso ai campi di una classe, ovvero fornendo l’accesso alle variabili (x) di istanza di una classe soltanto attraverso appositi metodi (setX getX ) dichiarati usando il modificatore public (questo modificatore li renderà invocabili dall’esterno da oggetti appartenenti ad altre classi).
Questa regola, che blocca l’accesso diretto a tutti gli attributi privati, rende la classe indipendente e riutilizzabile; inoltre, ciò comporta anche una maggiore robustezza del software.
Esempio:
class Persona {
private String nome;
private String cognome;
// gli attributi sono privati quindi non direttamente accessibili dall'esterno della classe
public Persona(String nome,String cognome){
this.nome=nome;
this.cognome=cognome; }
// Il costruttore definisce i valori iniziali degli attributi privati)
public String setNome (String nome) { this.nome= nome;
}
// attraverso i metodi get e set permetto l'accesso alle variabili private
public String getNome (){ return nome;
}
public String setCognome(String cognome){ this.cognome= cognome;
}
public String getCognome(){
return cognome; }
}