I metodi F. Bombi 20.10.2003. Campi e metodi Abbiamo visto che una classe può contenere – Campi...
-
Upload
piera-lorenzi -
Category
Documents
-
view
212 -
download
0
Transcript of I metodi F. Bombi 20.10.2003. Campi e metodi Abbiamo visto che una classe può contenere – Campi...
I metodiI metodi
F. Bombi
20.10.2003
Campi e metodiCampi e metodi
Abbiamo visto che una classe può contenere– CampiCampi – MetodiMetodi
I campi sono utilizzati per memorizzare lo statostato di un oggetto esemplare della classe
Dei campi esiste una copia per ogni oggetto esemplare (o istanza) della classe. I campi rappresentano quindi delle variabile presenti nell’esemplare (variabili variabili d’istanzad’istanza) in contrasto con le variabili dichiarate all’interno di un blocco di codice che vengono detta variabili locali
I metodiI metodiUn metodo è un segmento di codice scritto
con il seguente formato[modificatori] Tipo nomeMetodo
([parametro1, parametro2, …])
[throws ecc1, ecc2, …]
{ corpo del metodo }I modificatori possono essere
– [] oppure static– [] oppure public, private, protected
I metodi (segue)I metodi (segue) Il Tipo indica di che tipo sarà il valore
eventualmente reso dal metodo alla sua conclusione– void quando il metodo non restituisce un valore– Tipo primitivo quando il metodo restituisce un
valore– Nome di una classe quando il metodo restituisce
un riferimento Se il metodo non è void deve terminare con
un’istruzione return espressione;e l’espressione deve assumere il valore che si vuole
che il metodo restituisca alla sua conclusione
Come si attiva un metodoCome si attiva un metodo Un metodo viene attivato con un’espressione del tipo
riferimento.nomeMetodo(argomento1, argomento2, …)
Il riferimento con il quale si attiva un metodo deve puntare ad un oggetto esemplare della classe che contiene il metodo e viene detto parametro implicitoparametro implicito, per il suo tramite il metodo ha accesso alle variabili d’istanzavariabili d’istanza della classe
Gli argomenti (detti qualche volta actual paramteractual paramter) sono espressioni utilizzate per inizializzare i parametri del metodo (detti anche formal parameterformal parameter)
Un metodo riceve quindi– In ingresso: i valori degli eventuali argomenti– In ingresso e usciti: l’oggetto cui si riferisce il parametro implicito– In uscita: il valore di ritorno
Il passaggio dei parametriIl passaggio dei parametri In generale alla chiamata di un sottoprogramma è
possibile prevedere che i parametri siano passati per– RiferimentoRiferimento– ValoreValore
Alcuni linguaggi (ad es. Pascal, C++) prevedono sia il passaggio per riferimento che per valore, Java prevede solo il passaggio dei parametri per valore
In Java il meccanismo del passaggio dei parametri è quindi unidirazionaleunidirazionale, in altri termini non è possibile restituire un valore tramite un parametro
public class SelezioneInteri{ private int[] v; private int n;
public SelezioneInteri () {} public SelezioneInteri (int[] x, int y) { v = x; n = y; }
public void ordina () { for (int i = 0; i < (n-1); i++) { int piccolo = i; for (int j = i+1; j < n; j++) if (v[j] < v[piccolo]) piccolo = j; int temp = v[piccolo]; v[piccolo] = v[i]; v[i] = temp; } }
public void ordina (int y) { n = y; ordina(); }
public void ordina (int[] x, int y) { v = x; n = y; ordina(); }}
public class SelezioneInteri{ private int[] v; private int n;
public SelezioneInteri () {} public SelezioneInteri (int[] x, int y) { v = x; n = y; }
public void ordina () { for (int i = 0; i < (n-1); i++) { int piccolo = i; for (int j = i+1; j < n; j++) if (v[j] < v[piccolo]) piccolo = j; scambia(v[piccolo], v[i]); } }
private void scambia (int x, int y) { int tmp = x; x = y; y = tmp; }
public void ordina (int y) … }
public void ordina (int[] x, int y){… }}
public class SelezioneInteri{ private int[] v; private int n;
public SelezioneInteri () {} public SelezioneInteri (int[] x, int y) { v = x; n = y; }
public void ordina () { for (int i = 0; i < (n-1); i++) { int piccolo = i; for (int j = i+1; j < n; j++) if (v[j] < v[piccolo]) piccolo = j; scambia(piccolo, i); } }
private void scambia (int x, int y) { int tmp = v[x]; v[x] = v[y]; v[y] = tmp; }
public void ordina (int y) … }
public void ordina (int[] x, int y){… }}