Newsgroup: it.comp.java
Titolo: E' possibile simulare i puntatori in JAVA?

Se lo e', come posso fare ?
Saluti,
 
Gian Luca Prosperini <TEAM OS/2 ITALIA>


Se intendi dire la matematica dei puntatori penso che tu sia
sulla cattiva strada, e' questione di cambiare mentalita' 
(considera' che anch'io sono un programmatore C). Una volta
entrato nel concetto di gestione di memoria di Java non
puoi che trovarti bene (se non a scapito delle prestazioni).
Se invece intedi parlare di riferimenti ad oggetti, te li puoi
gestire tranquillamente!
----------------------------------------------------------
Dall'Asta Daniele                            
da...@ibm.net
Medesano PARMA                            TEAM OS/2 ITALIA

gestire tranquillamente!
Sai dirmi come posso, ad esempio, creare una lista di record:
     record --> record --> record --> record --> ... --> record -> nil
Grazie!


      record --> record --> record --> record --> ... --> record -> nil
Per generare un riferimento ad oggetto devi semplicemente crearlo con:
   Oggetto pippo;        // Creato riferimento 'pippo' ad 'Oggetto'
quindi puoi crearne uno nuovo oppure, come desideri tu, fare riferimento
ad 
un'altro oggetto dello stesso tipo
   pippo=new Oggetto();  // Associato nuovo 'Oggetto' a 'pippo'
   pippo=pluto;          // 'pluto' e' un 'Oggetto' e ora 'pippo' fa
riferimento
                         //  allo stesso oggetto di 'pluto'
Per cui per fare una catena basta che crei un oggetto dove all'interno
ci sono
il riferimento all'oggetto che segue e a quello che precede (se ti vuoi
sprecare).
esempio:
public class Catena {
   private Catena rifPrecedente;  // riferimento a oggetto precedente
   private Catena rifSuccessivo;  // riferimento a oggetto successivo
   private Oggetto contenuto;     // oggetto contenuto nell'elemento
della catena
   .
   .
   .
   .
}
Comunque, se ti puo' aiutare, il libro della Mc Graw Hill 'JAVA il
manuale' di 
Patrick Naughton l'ho trovato veramente utile, e comunque l'avevo preso
diverso 
tempo fa' e ora ci saranno probabilmente libri migliori. Comunque se
mastichi
meglio l'italiano dell'inglese (se si puo' lo preferisco anch'io),
questo libro
ti da' molte informazioni.







Sto (tentando) di realizzare un traduttore da PASCAL->JAVA... e... a quanto
sembra, il problema dei puntatori non č proprio una "bazzecola"!
Pertanto il problema e' questo: il programma PASCAL crea delle strutture
dati utilizzando PUNTATORI ed il PROGRAMMA (target) in JAVA deve
riprodurre lo stesso risultato.
Sono coscente che dovro' introdurre delle limitazioni, per cui a me
basterebbe poter tradurre delle alcuni tipi di strutture dati:
- ALBERI 
-  LISTE
Avevo pensato, in un primo momento, di creare una classe con la struttura
del record da tradurre... ma come faccio a dire ad una classe di 
puntare a se stessa?
Hai qualche altra idea, o soluzione a questa?
Un saluto, 
Gian Luca <<TEAM OS/2 ITALIA>>





 Hai qualche altra idea, o soluzione a questa?
Non deve 'puntare' a se stessa, ma semplicemente referenziare un nuovo
oggetto della sua stessa classe. 
es:
class pippo {
        int chiave;
        Object Dati;
        pippo figliodx = NULL, figliosx = NULL;
}
(potrebbero non leggersi bene le parentesi graffe: non ci far caso)
In linea teorica dovrebbe funzionare (non ho mai provato). Se poi non lo
facesse scrivimi che cerchero' di fare delle prove piu' serie ("perche'
allora non lo fai subito?", ottima domanda :-) sto sotto esami e non ho
molto tempo. Ma posso trovarlo con un po' di calma se ti servisse
realmente).
Comunque la tua idea mi sembra abbastanza difficile da realizzare (non
per demoralizzarti, ci mancherebbe! :-) ). Sono linguaggi molto diversi
e non so come vorrai simulare molti dei costrutti che il Pascal ha e
Java no. 
Ad esempio in Java non hai bisogno di allocare spazio in memoria,
giusto? Ma hai bisogno comunque di chiamare new... 
In ogni caso i miei migliori complimenti per l'idea e la perseveranza!
:-)


Medesano PARMA
Davide Marcato.
-----------------------------------------------------------------
| --- AshNet S.r.l.
| --- C/C++/Windows/Internet Developer & Administrator
-----------------------------------------------------------------
| *** E-Mail: 
dav...@netics.it
| *** WWW: 
http://www.netics.it
| *** Fidonet: 2:333/209.28
-----------------------------------------------------------------

 -  LISTE
	Per le linked list puoi' tranquillamente usare 
	la classe java.util.Vector, funziona e' esattamente 
	come una lista linkata. Per gli alberi prova un po' ad usare
	un vector per ogni nodo, oppure in modo piu' elegante:
	class Node {
		public Node right = null, left = null;
 
		public Object leaf = null;
 
		// Se e' un foglia (nodo terminale)
		Node( Object leaf ) {
			this.leaf = leaf;		
		}
 
		// Se e' un nodo...
		Node( Node right, Node left ) {
			this.right = right;	
			this.left  = left;
		}		
	}
 
 
	// Esempio idiota...	
	public class Foo {
		Node leaf1 = new Node( new Integer( 0 ) ), 
	     	leaf2 = new Node( new Integer( 1 ) );
		Node root = new Node( leaf1, leaf2 );
 
	}
 
	Se ci sono problemi, madami una mail!
						Ciao
 
-- 
+----------------------------------------------------------------------+
|***** AndreA "DylanD" Peltrin *******|            e-mail:             |
|"She'll come back as fire to burn all|     
and...@interplanet.it
      |
|the liars, and leave a blanket of ash|       ZOO Software Page:       |
|on the ground."<-<-<-<-<-<- K. Cobain| 
http://www.interplanet.it/zoo
  |
+----------------------------------------------------------------------+