Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    problema vettore di oggetti

    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 è:
    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() );
    			}
    		}
    	}
    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 .
    nessun errore di compilazione, nessun warning, java 6.

  2. #2

    Re: problema vettore di oggetti

    Originariamente inviato da joker83
    eppure ne creo uno nuovo quando utilizzo il metodo
    Secondo me l'oggetto Draw va clonato...altrimenti più oggetti condividono un unico stesso stato.

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: problema vettore di oggetti

    Originariamente inviato da joker83
    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 .
    Chiariamo subito che facendo vettoreStati.add(new Draw(.... all'interno del Vector ci sono effettivamente oggetti Draw distinti.

    Lo "stato" di questi oggetti (i due riferimenti ai Vector P/S) potrebbe però essere "condiviso" da più dei Draw nel Vector .... dipende cosa passi al addState. Se passi sempre lo stesso identico oggetto Draw (con gli stessi Vector P/S) ... allora ovviamente i due Vector sono condivisi tra tutti i Draw nel Vector.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    esatto l'errore era proprio quello. nel costruttore gli passavo i due vettori però poi non ne istanziavo dei nuovi ma gli assegnavo ai campi dell'oggetto. Quindi istanziavo più oggetti ma tutti quanti condividevano gli stessi due vettori (P e S).
    thanks

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.