Salve a tutti
Ho un problema a gestiere l'allocazione dinamica di oggetto utilizzando dei vettori.
Voglio salvare le modifiche apportate ad un oggetto. L'idea è di memorizzare ogni stato dell'oggetto in una cella del vettore. Il vettore conterrà quindi tutti gli stati(la storia delle modifiche) dell'oggetto, in modo da poter segliere quale selezionare(scorrendo il vettore). Siccome l'oggetto(draw) viene modificato a runtime quando lo inserisco nel vettore ne creo un altro con gli stessi campi interni.(che sono altri due vettori).
L'applicazione si compone di diverse classi per cui inseirirò il codice strettamente necessario(sperando che l'errore non sia da altre parti).
ho un vettore di oggetti draw. ogni oggetto draw ha due campi contenenti due vettori(vectorP e vectorS) vectorP contiene una struttura Punto (int X, int Y).Il metodo getPoint(int i) ritorna il punto alla posizone i. Il metodo getX ritorna x e getY ritorna Y. Li userò per stampare il contenuto dei vettori.
La classe che gestisce il vettore è:
In sostanza il problema è che le celle vengono sovrascritte con l'ultimo oggetto inserito. Cioè in tutte le posizoni del vettore ho lo stesso oggetto disegno, eppure ne creo uno nuovo quando utilizzo il metodo .add .codice:public class VectorManager { private Vector<Draw> vettoreStati= null; private int index = 0; public VectorManager(){ vettoreStati = new Vector<Draw>(); } /*aggiunge un oggetto draw al vettore. disegno rappresenta lo stato attuale */ public void addState(Draw disegno){ vettoreStati.add(new Draw(disegno.getVectorP(),disegno.getVectorS())); index++; } public void printVectorState(){ for(int i =0; i <index; i++){ //scorro oggetti draw System.out.println("DISEGNO MEMORIZZATO POS: "+ i); for(int j=0; j<( vettoreStati.get(i)).pointN(); j++){ //scorro punti dello stato System.out.print("X: "+( vettoreStati.get(i)).getPoint(j).getX() ); System.out.println(" Y: "+( vettoreStati.get(i)).getPoint(j).getY() ); } } }
nessun errore di compilazione, nessun warning, java 6.



Rispondi quotando
