Newsgroup: it.comp.java
Titolo: Re: perplessità

Il discorso vale anche per i metodi "normali", non solo per i costruttori.
lo capissi per bene in merito al costruttore ...non avrei porblemi
neanche per i metodi d'istanza ...:))
grazie comunque !

Quanto sto per chiedervi, probabilmente č per voi che siete padroni
di tale linguaggio, e che avete una capacitŕ di astrazione elevata ,
banale, ma dopo aver consultato diversi libri e tutorial, rimango un
po' perplesso sull'uso del "this".
vorrei portarvi come esempio un frammento di codice, e dirvi quello
che ho capito io dell'utilizzo del this !
Cosě che voi possiate dirmi se sono fuori strada o meno !
MI fermerň al solo costruttore, i miei dubbi sono lě,
nell'implementazione dei metodi poi non ho molti problemi.
class Rettangolo{
   private double base,altezza;
     public Rettangolo (double b,double h){
       this.base=b;
       this.base=h;
    }
Quindi definita una classe rettangolo, definisco le due variabili di
istanza di tipo double, base e altezza.
Dopodichč definisco il metodo speciale costruttore, che prende come
argomenti i due double b ed h .
Adesso vi dico cosa ho capito io dai vari testi consultati:
supponiamo che io debba testare questa classe, con appunto una classe
di test che ciamo TestRettangolo, contenente il metodo main, č in
questa classe che creerň effettivamente l'oggetto, ad esempio R1 della
classe rettangolo , invocando il costruttore nella maniera seguente:
class TestRettangolo{
 
   public static void main (String[] args){
   Rettangolo R1=new Rettangolo(20,10);
.......
.......
Quello che mi chiedo sono le seguenti cose :
le variabili di istanza sono variabili proprie dell'oggetto 
che io andrň a creare, e che nel moemnto in cui le dichiaro 
non referenziano ancora nulla ?
Le variabili dichiarate come parametri formali del costruttore,
puntano praticamente lo stesso oggetto delle variabili di istanza ?
Quando creo l'oggetto inserendo i parametri attuali 20 e 10 ,
praticamente assegno un valore alle variabili argomento del
costruttore?
Posso farlo solo perchč l'oggetto č corredato di due variabili di
riferimento che poi srebbero quelle di istanza ?
Mi scuso se č troppo banale ciň che sto chiedendo , matutti i stesti e
i tutorial consultati prima di domadrvi sta cosa sono abbatsnza
confusionari, o meglio difficilmente interpretati dal sottoscritto, da
ciň che ho capito alcuni affermano che l'uso del this sia
assolutamente facoltativo, cosa molto starna in quanto il mio
professore a lezione ci ha sbattuto su un bel po' !
grazie a tutti e ciao!

 ciò che ho capito alcuni affermano che l'uso del this sia


 riferimento che poi srebbero quelle di istanza ?
Non sono sicuro di aver capito, comunque si puoi utilizzare
costruttori che hai dichiarato nella classe Rettangolo, non altri;
cioe' non puoi scrivere
Rettangolo R1 = new Rettangolo(10,20,30); perche' non esiste un
costruttore con tre parametri
 
Ciao e spero di esserti stato di aiuto!      Enzo

 torniamo quindi all'utilizzo di questo benedetto this :(
'this' è una keyword che indica il riferimento all'oggetto in cui ti trovi.
this.base = 10;
indica che stai assegnando il valore 10 alla proprietà (o variabile di 
istanza) 'base' dell'oggetto corrente. this può essere implicito, nel 
senso che la stessa operazione la puoi fare:
base = 10;
tuttavia l'uso esplicito di this non fa male e talvolta può essere 
indicato per risolvere dei problemi di ambiguità di nomi, come variabili 
locali che hanno lo stesso nome delle proprietà (in questo caso si dice 
esplicitamente che ci si vuole riferire alla proprietà e non alla 
variabile locale).

 riferimento che poi srebbero quelle di istanza ?
E perchè mai? Un costruttore di questo tipo:
       public Rettangolo (double b,double h){
   }
Non fa nulla, per assurdo, ma è lecito.
Gli argomenti del constructor non hanno alcun legame formale con le 
variabili di istanza; lo hanno eventualmente nel caso specifico che hai 
riportato perchè tu lo hai creato con l'assegnazione.

ti consiglio questo tutorial universitario
http://www.dis.uniroma1.it/~degiacom/didattica/labprog/materiale/unita0/unita0_4pp.pdf
veramente ben fatto ed utilissimo...penso ti chiarirai tutti i dubbi ;)
ciao!
PS per il resto delle lezioni vai qui
http://www.dis.uniroma1.it/~degiacom/didattica/labprog/materiale/
Inviato da 
www.mynewsgate.net

riportato perchè tu lo hai creato con l'assegnazione.
E' in questo punto che sono maggiormente confuso...
torniamo quindi all'utilizzo di questo benedetto this :(
Ti ringrazio dell'interessamento comunque, se ti ritrovi un attimo di
tempo ed un sempio magari semplice, che possa chiarirmi ti sarei ben
lieto se potessi postarmelo .
Grazie ancora e ciao

 grazie a tutti e ciao!
Nell'esempio da Te riportato l'uso del this è facoltativo perchè nella
definizione del costruttore hai usato i nomi "b" e "h". Se avessi usato 
"base" e "altezza" sarebbe stato obbligatorio.
Bada bene che non sarebbe in quest'ultimo caso un errore sintattico non
usare "this" ma il significato cambierebbe: le variabili di istanza non
verrebbero valorizzate.
Il discorso vale anche per i metodi "normali", non solo per i costruttori.
Se gli argomenti del metodi hanno lo stesso nome delle variabili di istanza
quest'ultime vengono nascoste. Per continuare a vederle è necessario il
this.
Ciao