Che cos'è un oggetto immutabile?
Nella programmazione orientata agli oggetti, un oggetto immutabile è un oggetto le cui proprietà non possono essere modificate dopo che è stato creato. La maggior parte degli oggetti, al contrario, sono oggetti mutabili, il che significa che alcune o tutte le loro proprietà possono essere modificate liberamente dopo la creazione. Una varietà di linguaggi per computer ha la capacità di creare oggetti immutabili, tra cui Java, C ++, erlang, Tcl e scala.
Un oggetto immutabile può essere creato in due modi: creando una classe per definizione immutabile o dichiarando esplicitamente un oggetto altrimenti mutabile come immutabile. La metodologia per la creazione di una classe immutabile varia in base al linguaggio del computer utilizzato. Indipendentemente dalla lingua, una classe immutabile non deve avere metodi che possano cambiare i suoi dati interni e nessun modo per cambiare i metodi - cioè sovrascritti o sovraccaricati - in un modo che cambierebbe i suoi dati interni. Questo è il più complicato dei due approcci. Per creare un oggetto immutabile da un oggetto altrimenti mutabile, d'altra parte, si può spesso applicare una parola chiave per designare l'oggetto come immutabile.
Ad esempio, la creazione di oggetti immutabili in Java si basa fortemente sulla parola chiave "finale". Un modo rapido per rendere immutabile una classe in Java è dichiarare la classe, così come tutti i suoi metodi e membri dei dati, finali. Una strategia simile può essere utilizzata anche in C ++ con la parola chiave "const". Tuttavia, questi approcci, a seconda del contenuto della lezione, potrebbero non essere i migliori. In generale, gli oggetti possono di solito essere resi immutabili da un'attenta manutenzione dei loro dati interni.
Creare un oggetto immutabile usando una parola chiave, come nell'esempio sopra, è spesso molto più semplice che scrivere un'intera classe per essere immutabili. L'uso di questo approccio, tuttavia, ha i suoi pericoli. Quando si designa in modo esplicito un oggetto immutabile in questo modo, è importante che il programmatore sia sicuro che tutte le proprietà e i dati appropriati siano stati incorporati per primi nell'oggetto. Fare affidamento su un oggetto incompleto potrebbe essere pericoloso, in particolare se manca un'informazione essenziale.
Se un oggetto è mutabile ma richiede che i dati immutabili siano creati correttamente, i dati immutabili devono essere inizializzati prima di poter creare l'oggetto mutabile. Gli oggetti immutabili sono sempre immutabili, siano essi valori di dati o oggetti di grandi dimensioni, e devono sempre essere trattati come tali. In generale, un oggetto immutabile non può essere reso mutabile dopo essere stato creato, sebbene a volte possano essere copiati come oggetti mutabili. Di solito si può presumere che anche un oggetto immutabile e una delle sue copie siano immutabili, il che può prevenire problemi di dati o memoria.