Sei sulla pagina 1di 3

Metodi di accesso e modifica

Nella precedente dispensa abbiamo visto che l'accesso, in lettura e scrittura, alle variabili di istanza di una classe deve essere realizzato attraverso la chiamata di metodi specifici, detti metodi di accesso e di modifica. I metodi di accesso, per convenzione, hanno un nome che inizia con la parola get, seguita dal nome della variabile di istanza sulla quale operano. Essi consentono di leggere il valore contenuto nella variabile di istanza, non hanno mai parametri e restituiscono un valore dello stesso tipo della variabile di istanza Nella classe Quadrato, il metodo che permette di leggere il valore di lato si pu chiamare getLato, anche se la scelta di un nome diverso non influisce sul risultato che si vuole ottenere. public double getLato() { return lato; } I metodi di modifica, per convenzione, hanno un nome che inizia con la parola set, seguita dal nome della variabile di istanza sulla quale operano. Essi consentendo di assegnare un valore alle variabili di istanza, hanno sempre un parametro, dello stesso tipo della variabile a cui accedono e restituiscono sempre un valore void. Nella classe Quadrato, il metodo che permette di modificare il valore di lato si dovrebbe chiamare setLato. public void setLato(double l) { lato = l; } I metodi di modifica effettuano solitamente dei controlli sui valori assegnati alle variabili di istanza. Se il valore fornito non adeguato si preoccupano di comunicarlo al chiamante attraverso il lancio di una eccezione. Pi avanti in questo corso ci occuperemo in dettaglio delle eccezioni. Per esempio, se la misura del lato del quadrato un numero negativo, il metodo setLato non deve assegnare tale valore alla variabile di istanza ma si deve limitare ad avvisare il main. Sar poi il main a gestire questa situazione, eventualmente richiedendo linserimento in input di un valore valido per il lato. public void setLato(double l) { if(l>=0) lato = l; else //lancia eccezione }

Autore: Cinzia Bocchi Ultimo aggiornamento: 10/10/11

Esempio: Utilizzo di metodi di accesso/modifica


Riprendiamo il codice di Quadrato visto in precedenza e modifichiamolo aggiungendo i metodi di accesso e modifica alla variabile di istanza lato. public class Quadrato { //VARIABILI DI ISTANZA private double lato; //METODI public double getLato() { return lato; } public void setLato(double l) { lato = l; } public double calcolaArea() { return Math.pow(lato,2); }

Anche il codice della classe UsaQuadrato deve essere modificato, per evitare un errore in fase di compilazione. Aggiungiamo, inoltre, una chiamata al metodo getLato per testarne la correttezza. import javax.swing.*; public class UsaQuadrato { public static void main(String[] args) { //VARIABILI LOCALI double area; Quadrato unQuadrato; //CREAZIONE OGGETTO QUADRATO unQuadrato= new Quadrato(); //ISTRUZIONI unQuadrato.setLato( Double.parseDouble(JoptionPane.showInputDialog (Immettere la misura del lato))); //test del metodo getLato JoptionPane.showMessageDialog(null,Lato= + unQuadrato.getLato()); area= unQuadrato.calcolaArea(); JoptionPane.showMessageDialog(null,Area= +area); } }

Autore: Cinzia Bocchi Ultimo aggiornamento: 10/10/11

Per ulteriori chiarimenti si veda la dispensa allegata Esecuzione di metodi di accesso/modifica. Nota E consigliabile definire metodi set solo per le variabili per le quali strettamente necessario. Le classi che non definiscono metodi set sono dette immutabili. La classe String, per esempio, una classe immutabile perch non esiste un modo per modificare una stringa dopo la sua creazione.

Quest'opera stata rilasciata con licenza Creative Commons Attribution-ShareAlike 3.0 Unported. Per leggere una copia della licenza visita il sito web http://creativecommons.org/licenses/by-sa/3.0/ o spedisci una lettera a Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

Autore: Cinzia Bocchi Ultimo aggiornamento: 10/10/11