I metodi F. Bombi 20.10.2003. Campi e metodi Abbiamo visto che una classe può contenere – Campi...

7
I metodi I metodi F. Bombi 20.10.2003

Transcript of I metodi F. Bombi 20.10.2003. Campi e metodi Abbiamo visto che una classe può contenere – Campi...

Page 1: I metodi F. Bombi 20.10.2003. Campi e metodi Abbiamo visto che una classe può contenere – Campi – Metodi stato I campi sono utilizzati per memorizzare.

I metodiI metodi

F. Bombi

20.10.2003

Page 2: I metodi F. Bombi 20.10.2003. Campi e metodi Abbiamo visto che una classe può contenere – Campi – Metodi stato I campi sono utilizzati per memorizzare.

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

Page 3: I metodi F. Bombi 20.10.2003. Campi e metodi Abbiamo visto che una classe può contenere – Campi – Metodi stato I campi sono utilizzati per memorizzare.

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

Page 4: I metodi F. Bombi 20.10.2003. Campi e metodi Abbiamo visto che una classe può contenere – Campi – Metodi stato I campi sono utilizzati per memorizzare.

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

Page 5: I metodi F. Bombi 20.10.2003. Campi e metodi Abbiamo visto che una classe può contenere – Campi – Metodi stato I campi sono utilizzati per memorizzare.

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

Page 6: I metodi F. Bombi 20.10.2003. Campi e metodi Abbiamo visto che una classe può contenere – Campi – Metodi stato I campi sono utilizzati per memorizzare.

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

Page 7: I metodi F. Bombi 20.10.2003. Campi e metodi Abbiamo visto che una classe può contenere – Campi – Metodi stato I campi sono utilizzati per memorizzare.

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){… }}