Newsgroup: it.comp.java
Titolo: Passare parametri per riferimento

Salve,
c'è un modo per creare un metodo che modifichi il valore effettivo dei
parametri passati? Deve modifica tipi primitivi e String, quindi non voglio
fare come dice il libro, e cioè creare un oggetto e chiamare un metodo
perché questi può modificare l'oggetto... (soluzione del cavolo!)
Grazie
--
Luigi
http://web.tiscali.it/luigi_web
byte...@hotmail.com
ICQ 46240443

 ha scritto nel messaggio
news:QoyL7.160650$sq5.7...@news.infostrada.it...


 perché questi può modificare l'oggetto... (soluzione del cavolo!)
ormai noi due ci sposeremo (ho già la ragazza non ce provà)
però mi paice aiutarti, più che altro perchè so cosa risponderti :-)
solitamente si fa così
int variabile;
setVariabile(int parametro)
{
    variabile=parametro;
}
nulla di più semplice nella maniera più assoluta
in questo modo puoi inserire controlli del tipo:
if (parametro>x)
{
   variabile=parametro;
}
meglio di così non si può fare.
al massimo lo dichiari statico e lo richiami classe.metodo senza creare
l'oggetto.
chiedi chiedi

ora che leggo bene però ho risposto alal domanda sbagliata:
quando dichiari un metodo:
metodo(int par)
crei una variabile par locale, se ci fosse una variabile par 'superiore'
verrebbe accantonata per far spazio alla variabile locale che ha sempre la
precedenza quindi non verrebbe modificata.
in C si poteva fare:
funzione(x)
era diverso da
funzione(&x)   si usava la &? non mi ricordo..l'ho studiato pochino cmq vuol
dire che la funzione andava a modificare la variabile originale(&x =
indirizzo di memoria della variabile x).
molto diverso
spero dia verci azzeccato questa volta
ciao

 Grazie
Prego
--
Ciao by Allanon

 perché questi può modificare l'oggetto... (soluzione del cavolo!)
non e' che devi fare come dice il libro... devi fare come ti dice il
paradigma OO :-))

> funzione(&x)   si usava la &?
Si, esattamente quello che con la & si fa in C, in Java non si può fare
vero?
Se devo scrivere un metodo che accetta 2 int, e li scambia di posto,
ovviamente li devo passare per riferimento, se no scambia le copie e non
serve a niente. In Java come devo fare una cosa simile?
Ciao


> concordo sul cavolo, ma e' l'unico modo che hai. :-)
Pork! A me serve che la funzione scambi il contenuto di 2 variabili e
basta... in C++ ci volevano 10 secondi per scriverla, perché in Java un
concetto così semplice è così difficile da attuare!?


 però mi paice aiutarti, più che altro perchè so cosa risponderti :-)
Bene, ma come dici tu devo restituire qualcosa... a me serve una bella
funzione void, che deve fare il suo lavoro su 2 variabili, senza restituire
nulla


vediamo se riesco ad aiutarti....
class Prova
{
  public static void scambia(int x, int y)
  {
        int a;
        a = x;
        x = y;
        y = a;
  }
}
e così non risolvi nulla.......
class Prova
{
   int x, y;
  public static void scambia(int b, int c)
  {
        int a;
        a = b;
        b = c;
        c = a;
        x = b;
        y = c;
  }
}
al momento mi viene in mente solo così.... o al amssimo con
THIS.....non cambia niente.
lo sai che mi hai fatto venire un dubbio? così se cambi nome a x o y
col cavolo che funziona più.
qui purtroppo non ho ne compilatore ne manuale (mai mettere il
compilatore a casa sennò me metto a lavorà anche qui   (leggo il NG
perchè in ufficio non c'è internet :-) ))   però un modo ci deve
essere, qualche cosa ho visto in giro.


Praticamente avevo scritto il bubbleSort e mi serviva la funzione scambia,
per scambiare le stringhe di un' array di classi. C'č il ciclo for che
scorre l'array e vede cosa scambiare. Con la tua soluzione non funzionerebbe
perchč altrimenti dovrei dichiarare ogni variabile espicitamente piuttosto
che racciuderle in una classe e creare un'array di esse. Ovviamente cosě
facendo perderei tutti i benefici dei costrutti suddetti (array e classi).
Alla fine il problema l'ho risolte scambiando all'interno del ciclo, senza
chiamate alla funzione scambia.
Ciao


concetto così semplice è così difficile da attuare!?
Se come hai detto devi implementare il bubble-sort, l'approcio per il
quale ti serve un metodo per scambiare due variabili locali alle quali
questo metodo non ha accesso diretto, e' l'approcio sbagliato per la
filosofia di Java. In pratica se cerchi di programmare con una
filosofia procedurale con Java, incontrerai molti problemi.
L'approcio a mio avviso migliore, non per le prestazioni, ma per
l'aderenza al paradigma OO (e sopratutto nella filosofia Java), e'
quello di scrivere una classe che accetti oggetti che implementano
l'interfaccia Comparable e basarti su quella per ordinarli. A questo
punto non hai piu' i problemi di prima in quanto lavorerai solo con
reference. Potrai avere all'interno della classe (e qui che si
conserva la coesione della classe, nello stile OO) il metodo per
scambiare due oggetti Comparable.
[}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{]
SunGray aka Gabriele Lana  
www.sungray.com
contact me @ : 
sun...@tiscalinet.it
[}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{]