Newsgroup: it.comp.java
Titolo: Metdi e parametri predefiniti

In C/C++ tramite il seguente codice dichiaro un metodo che accetta 3
parametri, l'ultimo dei quali, se omesso in sede di chiamata, asume il
valore di default uguale a 1:
    void Draw_Point(int x, int y, int size = 1);
Com'è possibile sfruttare questo meccanismo in Java?
Grazie


sfrutti il meccanismo di java (e anche di altri linguaggi credo) di 
poter dichiarare due metodi con stesso nome ma con  parametri diversi.
overloading o polimorfismo? boh.. sulla nomenclatura sono sempre stato 
una schiappa :)
es.
class Foo {
	//metodo1
	void drawPoint(int x, int y, int size) {
	//etc
	}
	//metodo 2 se vuoi omettere size
	void drawPoint(int x, int y ) {
	int size = 1;
	//etc
	}
}
Foo pippo= new Foo();
e poi quando devi chiamare il tuo metodo scegli se chiamare il primo
pippo.drawPoint(1,2,3);
oppure
pippo.drawPoint(1,2);
spero di aver risposto alla tua domanda.
Ciao, Nonnu.

 wrote in message
6pxJb.41122$_P.17...@news4.tin.it...


>Ciao, Nonnu.

 }
Una piccola aggiunta (che forse hai dato per scontata). Il metodo 2
puo' essere definito nel seguente modo:
  void drawPoint(int x, int y) {
    drawPoint(x, y, 1);
  }
Andrea

 Andrea
Hai ragione!
Grazie andrea :)
Rifaccio a te la stessa domanda che ho fatto a simone..
perche' potrebbe essere non preferibile avere 2 metodi invece di uno?
solo una questione estetica?
(mi sembra di capire che simone viene dal C++ ..
SINTESI allo stato puro:
in una linea di codice almeno 4 effetti collaterali diversi ! :p )
N.

 CIao, L.
Il motivo č molto pratico:
Segue una funzione C++ con parametro predefinito:
void Disegna_Punto(int x, int y, COLORE colore = NERO);
Posso richiamare questa funzione in due modi:
1- Disegna_Punto(10,10); Che mi disegna il punto con il colore predefinito
NERO.
2- Disegna_Punto(10,10,ROSSO); Che mi disegna il punto con il colore
specificato ROSSO.
In questo modo posso fare un'unica funzione e potere evitare un sovraccarico
della funzione. L'overloading non č comunque un problema, ma per questo
scopo ritenevo puů pratico questo meccanismo.
Grazie a tutti per il dibattito

 perche' potrebbe essere non preferibile avere 2 metodi invece di uno?
[CUT]
Aumenta la leggibilita' del codice che quindi lo rende piu' "semplice".
In C++ e' "sbagliato" (in senso filosofico) avere due funzioni tipo:
void pippo(int a,int b) {}
void pippo(int a) {pippo(a,10);}
proprio per il motivo che le due possono essere raggruppate nella forma
piu' chiara:
void pippo(int a,int b = 10) {}
In Java manca questo tipo di "overloading interno".
-- 
Marco "Duff" Palermo
http://www.marcoduff.com/

 In Java manca questo tipo di "overloading interno".
imHHHHo in java sarebbe "sbagliato" filosoficamente *non* avere due metodi.
ovviamente è un opinione personale ma secondo me la leggibilita' aumenta 
avendo due metodi con numero di parametri diversi
(piuttosto che un solo metodo con eventuale inizializzazione di un 
parametro "al volo").
Creo sia proprio una differenza di filosofia tra il "scrivi in modo 
compatto" e "scrivi in modo prolisso"..
ovviamente poi e'tutta questione di gusti.
Ciao, L.
PS: per lavoro ho ripreso in mano codice java scritto da un 
programmatore C++.
Cari programmatori C++.. per favore..
fatelo per i poveri programmatori come me...
siate meno sintetici e piu verbosi!!!!! :P
ciao a tutti.
Nonnu.

 compatto" e "scrivi in modo prolisso"..
[CUT]
In questo caso e' un poco diverso, credo che sia una di quelle eccezioni
che confermano la regola...
