1 Corso di Informatica (Programmazione) Lezione 12 (19 novembre 2008) Programmazione in Java: i metodi statici
2 I metodi La parola metodo è sinomino di funzione, sottoprogramma, subroutine… e sta a indicare un blocco di codice che può essere invocato allinterno del programma in qualsiasi momento e ogni volta che si desidera. Nel seguito ci occuperemo dei metodi statici (creati mediante la parola chiave static) che appartengono alla stessa definizione di classe del programma (cioé la classe della procedura main).
3 I metodi statici (un esempio) public class EsempioMetodo { public static void main(String arg[]) { ; } static int metodo1(int x, int y){ ; } static float metodo2(float a, float b){ ; }
4 I metodi statici (un esempio) Lesempio precedente crea, allinterno della classe EsempioMetodo due metodi statici, identificati dai nomi metodo1 e metodo2. Nellesempio metodo1 riceve come parametri due interi (x e y), mentre metodo2 due float (a e b). Il metodo metodo1 restituisce un valore di tipo int, mentre metodo2 un valore di float. Allinterno della classe è possibile creare un qualsivoglia numero di metodi in un ordine qualsiasi.
5 La sintassi dei metodi Di un metodo bisogna definire: lintestazione (o signature) che permette di invocare in seguito il metodo e specifica la lista dei parametri formali (che può anche essere vuota) il corpo, cioé la sequenza di istruzioni che devono essere eseguite Ad esempio: static int metodo1(int x, int y){ ; } Corpo del metodo Intestazione Parametri formali
6 La sintassi dei metodi Esistono due tipi di metodi: quelli che eseguono unicamente istruzioni quelli che eseguono istruzioni e restituiscono un valore Ad esempio: static int metodo1(int x, int y){ ; } Metodo che restituisce un intero di tipo int
7 La sintassi dei metodi Definizione dellintestazione per metodi che eseguono unicamente istruzioni static void ( ) Ad esempio: static void metodo3(int x, int y){ ; } La parola chiave void indica che il metodo non restituisce alcun valore
8 La sintassi dei metodi Definizione dellintestazione per metodi che eseguono istruzioni e restituiscono un valore di un certo tipo static ( ) Ad esempio: static float metodo2(int a, int b){ ; } La parola chiave float indica che il metodo restituisce un valore di tipo floating point
9 La sintassi dei metodi La lista dei parametri formali (vedi ) specifica quanti e quali parametri il metodo può ricevere in ingresso ed è una lista di identificatori anticipati dal relativo tipo (separati dalla virgola):, …, Ad esempio: static float metodo2(int a, int b){ ; } Lista dei parametri formali
10 La sintassi dei metodi Il corpo del metodo è la sequenza di istruzioni che devono essere eseguite ogni volta che il metodo viene invocato e: è racchiuso tra parentesi graffe {} se restituisce un valore, allora deve finire con listruzione return ; ( deve appartenere al tipo indicato nellintestazione del metodo vedi ). Se il metodo è dichiarato con la parola chiave void, allora non è necessaria listruzione finale di return
11 La sintassi dei metodi Esempio di definizione del corpo di un metodo public static int areaTrapezio(int b1, int b2, int h){ int area; area=b1+b2; area=area*h/2; return area; } Istruzione che restituisce il valore calcolato dal metodo
12 Invocazione dei metodi Un metodo M può essere invocato (chiamato) allinterno della procedura main o allinterno di un altro metodo che è stato creato dal programmatore. Al momento dellinvocazione di M da parte del metodo chiamante C (main o qualche altro metodo statico) incominciano ad essere eseguite le istruzione del blocco di codice di M. Quando M termina riprendono ad essere eseguite le istruzioni di C, a partire da quella successiva alla chiamata di M.
13 Invocazione dei metodi Gli argomenti con cui si invoca un metodo M vanno passati nello stesso ordine della lista dei parametri formali specificata nella sua dichiarazione e possono essere valori espliciti o variabili contenenti valori (dello stesso tipo dei parametri formali)
14 Invocazione dei metodi (esempio) public class AreaTrapezio { public static void main(String arg[]) { int base1=20, base2=10, altezza=5; int areaTrapezio; areaTrapezio=areaTrapezio(base1, base2, altezza); System.out.println(Area=+areaTrapezio); } static int areaTrapezio(int b1, int b2, int h){ int area; area=b1+b2; area=area*h/2; return area; }