Metodi.


Java Sun

Earthweb
(ex Gamelan)

Jars

Java Boutique

Java Center

PIP






 JSem: 2.2

   Possiamo migliorare il codice di RettDemo creando un metodo che calcola l'area di un oggetto Rettangolo; questo è più pulito in quanto l'area dipende solo dai dati (latoa, latob) che definiscono gli oggetti.


   La struttura generale per definire un metodo è la seguente:

specificatore d'accesso	tipo di ritorno		nome(parametri)

  • Lo specificatore d'accesso può essere:public, private, protected... Se il livello di accesso non viene specificato, il livello di accesso di default è public. Quando un membro di una classe è dichiarato public, qualsiasi parte di codice all'interno del pacchetto può accedere a tale membro. La classe di un'applet deve essere public perchè il codice che serve ad avviarla è fuori dalla sua classe.
  • Un metodo può restituire dei dati, il tipo di ritorno specifica di che tipo sono questi dati (int, String, ecc...). L'istruzione per restituire dei dati è: return dato; Se il metodo non restituisce nessun dato, il tipo di ritorno deve essere void.
  • nome è il nome del metodo.
  • L'elenco dei parametri è una sequenza di coppie "tipo-nome", separate da virgole, dove nome è il nome del parametro e dove tipo è il suo tipo. Per esempio (int x), dichiara un parametro di tipo int, di nome x; invece (int x, double y) dichiara due parametri, uno, di tipo int, nome x, l'altro, di tipo double, nome y.
    Un parametro non deve essere necessariamente un tipo semplice (int, double, ecc...)
    Il tipo del parametro può essere una classe qualsiasi (cioè un parametro può essere un oggetto di una classe qualsiasi)


  • Esempi di metodi:

  • public void paint(Graphics g)
    E' un metodo di nome paint; il metodo paint è pubblico, non restituisce valori; c'è un parametro di tipo Graphics e di nome g (il nome può anche essere diverso, per esempio screen, ...). (Questo è un esempio in cui il parametro è un oggetto.)


  • public void init()
    E' un metodo di nome init; il metodo è pubblico, non restituisce valori, l'elenco dei parametri è vuoto.


  • public abstract void drawString(String Str, int x, int y)
    il metodo drawString della classe Graphics è pubblico, non restituisce dati, e ha tre parametri. Il parametro Str è la stringa che deve essere disegnata, (x,y) sono le coordinate del punto dello schermo in cui si inizierà a disegnare la stringa. Attenzione qui y misura la "baseline" del testo.
    C'è una piccola novità, il metodo è abstract, questo proviene dal fatto che la classe Graphics è una classe astratta. Vedremo più avanti cosa sono le classi astratte.

  •    Riscriviamo la classe Rettangolo con un metodo che calcola l'area:

    class Rettangolo{
    	
    	int latoa;
    	int latob;
    	
     int area(){
    	return latoa*latob;
    	}
    }
    

    Il metodo area della classe Rettangolo è un metodo di nome "area", che è pubblico per default e che restituisce un valore di tipo int (=latoa*latob); l'elenco dei parametri è vuoto.
    Esempio:

    import java.applet.*;
    import java.awt.*;
    
    public class RettDemo2 extends Applet{
    	
    	Rettangolo r1 = new Rettangolo();
    	Rettangolo r2 = new Rettangolo();
    	
    public void init(){
    	r1.latoa = 2;
    	r1.latob = 3;
    	r2.latoa = 10;
    	r2.latob = 20;
    	}
    public void paint(Graphics g){
    	g.drawString("L'area di r1 è: " + r1.area(),10,25);
    	g.drawString("quella di r2 è: " + r2.area(),10,50);
    	}
    }
    

    Possiamo migliorare ulteriormente la classe Rettangolo con l'introduzione di un metodo che imposta le dimensioni di ogni oggetto:
     class Rettangolo{
    	
    	int latoa;
    	int latob;
    	
    void Dim(int a, int b){
    	latoa = a;
    	latob = b;
    	}
    	
     int area(){
    	return latoa*latob;
    	}
    }
    

    In questo modo la dichiarazione di un oggetto Rettangolo di lati 10, 20, diventa:
    Rettangolo r = new Rettangolo();
    r.Dim(10,20);
    abbiamo guadagnato una riga di codice per ogni oggetto e abbiamo anche limitato gli errori, perchè nel modo precedente era facile dimenticarsi di impostare una dimensione.




     next		content		previous