PDA

View Full Version : [Java] Aiuto sulle istanze di oggetti


Andre81
14-09-2007, 09:12
Ciao ragazzi, stò cercando di imparare qualcosa su questo linguaggio, ma veniamo al dunque:

Mettiamo di avere queste poche righe di codice:

public class Rubrica {
private String nome;
/* Incapsulamento per i dati della rubrica */
public void setNome(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
}


Mettiamo adesso che io vada a creare tramite il metodo main, due istanze della classe Rubrica:

public class EseguiRubrica {
public static void main(String args[]) {

Rubrica n1 = new Rubrica();
n1.setNome("Andrea");

Rubrica n2 = new Rubrica();
n2.setNome("Marco");
}


La mia domanda è: Come faccio tramite un ciclo for ad esempio scorrere gli oggetti che mi sono creato? Cioè se io creassi 100 istanze, come faccio a scorrerle tutte?

Ciao e grazie a tutti per ora.....

Il compilatore che uso è il jdk1.5 tramite interfaccia EJE su Windows Vista.

isAlreadyInUse
14-09-2007, 09:15
Ti crei un array di oggetti

Andre81
14-09-2007, 09:17
ok, con un array forse saprei come fare, ma se insistessi su questa strada, esiste un metodo? vorrei solo capire come poter ripescare il reference agli oggetti....:D

comunque mi date qualche dritta anche su un array di oggetti???

afsdfdlecosdfsfdcco
14-09-2007, 10:06
ok, con un array forse saprei come fare, ma se insistessi su questa strada, esiste un metodo? vorrei solo capire come poter ripescare il reference agli oggetti....:D

comunque mi date qualche dritta anche su un array di oggetti???


Rubrica[] r = new Rubrica[50];

for (int i = 0; i < r.length; i++)
{
r[i] = new Rubrica(); // istanzia l'oggetto i-esimo
}
:stordita:

Andre81
14-09-2007, 11:06
Rubrica[] r = new Rubrica[50];

for (int i = 0; i < r.length; i++)
{
r[i] = new Rubrica(); // istanzia l'oggetto i-esimo
}
:stordita:

Giustissimo, in questo modo memorizzo nell' array il reference all' oggetto i-esimo...
ma perchè ci ho perso così tanto tempo.....:muro: :muro: :muro:

franksisca
14-09-2007, 23:06
questa è la soluzione base, ma esistono anche delle strutture dati che si occupano automaticamente dell'inserimento dei dati e della ricerca, se gli oggetti sono opportunamente costruiti.



un esempietto semplice semplice
Vector <String> nomi=new <String>Vector();
for(String nomi:nomecorrente){
nomecorrente="NOME";
}



P.S.: non ricordo bene l'uso dei generics e del forech, se passa pgi prima di me e ho sbagliatyo mi batosta a dovere:stordita: :stordita: :stordita: :stordita:

pisto
16-09-2007, 15:22
il costrutto foreach prende un'instanza di Iterable<T> e ti restituisce, finché il metodo di Iterator hasNext() è true, l'oggetto T che ti viene con next(). funziona anche con gli array. In pratica lo puoi vedere così:
for(T oggetto:Iterable<T>)
//qui fai quello che vuoi con loggetto di tipo T

franksisca
16-09-2007, 16:08
il costrutto foreach prende un'instanza di Iterable<T> e ti restituisce, finché il metodo di Iterator hasNext() è true, l'oggetto T che ti viene con next(). funziona anche con gli array. In pratica lo puoi vedere così:
for(T oggetto:Iterable<T>)
//qui fai quello che vuoi con loggetto di tipo T

si, non ricordavo la sintassi, praticamente nel mio esempio si dovrebbero invertire gli oggetti, grazie per avermelo rinfrescato :D

Andre81
18-09-2007, 13:33
Ok grazie ragazzi...

adesso sto cercando di capire per bene il reference this, sto guardando su java mattone dopo mattone e sul libro di De Sio Cesari, ma mi manca quel qualcosa che mi lascia perplesso...:mc:

Potete provare a spiegarmelo voi?

Ciao e grazie.

franksisca
18-09-2007, 13:58
Ok grazie ragazzi...

adesso sto cercando di capire per bene il reference this, sto guardando su java mattone dopo mattone e sul libro di De Sio Cesari, ma mi manca quel qualcosa che mi lascia perplesso...:mc:

Potete provare a spiegarmelo voi?

Ciao e grazie.

esponi i tuoi dubbi e cercheremo di colmarli.....come sono dotto :D:D:D:D

Andre81
18-09-2007, 14:48
Allora, io ho capito che il reference this serve per referenziare la variabile di istanza dell'oggetto corrente!

Il punto è che al runtime, la JVM non ha a che fare con le classi, ma con gli oggetti, quindi per capire a quale variabile di istanza devo accedere viene utilizzato il reference this.


1° oggetto (ref)--> 1° variabile
2° variabile

2° oggetto (ref)--> 1° variabile
2° variabile

Quindi quando voglio accedere ad una variabile, facciamo ad esempio la 2° variabile ho bisogno di sapere a quale oggetto mi riferisco, e questo la JVM lo riesce a fare tramite l'operatore this.
E' così ragazzi?

franksisca
18-09-2007, 15:30
Allora, io ho capito che il reference this serve per referenziare la variabile di istanza dell'oggetto corrente!

Il punto è che al runtime, la JVM non ha a che fare con le classi, ma con gli oggetti, quindi per capire a quale variabile di istanza devo accedere viene utilizzato il reference this.


1° oggetto (ref)--> 1° variabile
2° variabile

2° oggetto (ref)--> 1° variabile
2° variabile

Quindi quando voglio accedere ad una variabile, facciamo ad esempio la 2° variabile ho bisogno di sapere a quale oggetto mi riferisco, e questo la JVM lo riesce a fare tramite l'operatore this.
E' così ragazzi?

diciamo che non ho capito, ma sicuramente è una mia carenza.....

Andre81
18-09-2007, 15:32
Non credo che in questo caso la carenza sia tua...:D :D :D

Forse in modo più rozzo: ma se io sto accedendo ad un oggetto, perchè ho bisogno di un reference per le variabili interne?

franksisca
18-09-2007, 16:22
Non credo che in questo caso la carenza sia tua...:D :D :D

Forse in modo più rozzo: ma se io sto accedendo ad un oggetto, perchè ho bisogno di un reference per le variabili interne?

......se ho capito bene il tuo dubbio/problemma, tu dici perchè usare il this per utilizzare un oggetto di questa classe......per quel che ricordo io si fà così:


metodo(parametro nomeParametro){
this.nomeParametro = nomeParametro;
}


senza il this:

metodo(parametro nomeParametro1){
nomeParametro = nomeParametro1;
}



quindi, con il this nel primo caso tu dici a chi si deve assegnare l'oggetto, altrimenti si creerebbero casini......

spero di non aver detto eresie e di aver colmato il tuo dubbio :|

pisto
18-09-2007, 18:42
il this lo usi 1 quando vuoi avere un reference, all'interno di un metodo non statico, all'oggetto su cui è stato chiamato quel metodo, ed usarlo per passarlo come argomento ad un'altro metodo che richiede appunto quel tipo di oggetto come parametro. 2 quando hai un metodo il cui parametro ha lo stesso nome di un campo dell'oggetto stesso, quindi con this.mioCampo accedi al campo dell'oggetto, con mioCampo all'ipotetico omonima variabile.

si capisce quel che dico?