Incapsulamento
Perché non lasciare tutto pubblico
Sezione intitolata “Perché non lasciare tutto pubblico”Finora abbiamo modificato i campi direttamente:
persona.eta = -5;Java lo permette se il campo è accessibile, ma questo valore non ha senso.
L’incapsulamento protegge i dati di un oggetto e controlla come vengono letti o modificati.
private
Sezione intitolata “private”Con private, un campo può essere usato solo dentro la classe.
public class Persona { private String nome; private int eta;}Da fuori non puoi più fare:
persona.eta = 20; // errore se eta è privateServe un modo controllato per leggere e modificare il valore.
Un getter restituisce il valore di un campo.
public String getNome() { return nome;}Esempio:
public class Persona { private String nome;
public String getNome() { return nome; }}getNome permette di leggere nome senza rendere il campo pubblico.
Un setter modifica il valore di un campo.
public void setNome(String nome) { this.nome = nome;}Il vantaggio è poter controllare il valore prima di salvarlo.
public void setEta(int eta) { if (eta >= 0) { this.eta = eta; }}Se qualcuno prova a impostare -5, il valore non viene accettato.
Classe completa
Sezione intitolata “Classe completa”public class Persona { private String nome; private int eta;
public Persona(String nome, int eta) { this.nome = nome; setEta(eta); }
public String getNome() { return nome; }
public int getEta() { return eta; }
public void setEta(int eta) { if (eta >= 0) { this.eta = eta; } }}Uso:
public class Esempio { public static void main(String[] args) { Persona persona = new Persona("Luca", 20);
System.out.println(persona.getNome()); System.out.println(persona.getEta());
persona.setEta(21); System.out.println(persona.getEta()); }}Output:
Luca2021public è private
Sezione intitolata “public è private”public significa accessibile dall’esterno.
private significa accessibile solo dentro la classe.
Una regola molto comune in Java è:
- campi
private - metodi pubblici solo quando servono
Perché è utile
Sezione intitolata “Perché è utile”L’incapsulamento aiuta a:
- evitare valori non validi
- cambiare l’interno della classe senza rompere tutto il programma
- rendere chiaro quali azioni sono permesse
All’inizio sembra più lungo. Nei programmi reali rende il codice più sicuro e ordinato.