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

    Reperire un oggetto creato in un'altra classe

    Ciao,
    ho un problema probabilmente molto banale...è un po' di tempo che non programmo in Java ed evidentemente sono un po' arruginito...

    Allora ho questa classe chiamata PopolaTabella in cui sempmlicemente creo e popolo un oggetto di tipo Collection chiamato elenco.
    In tale classe è dichiarato il metodo getElenco() che ritorna il riferimento a tale oggetto elenco.

    codice:
    package managedBean;
    
    import java.math.BigDecimal;
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Date;
    
    import com.icesoft.faces.component.ext.RowSelectorEvent;
    
    public class PopolaTabella {
    	
    	PortafoglioCliente portafoglio;
    	
    	Collection elenco = new ArrayList();
    	
    	public PopolaTabella() {
    		portafoglio = new PortafoglioCliente();
    		portafoglio.setTipoElemento("Paperino");
    		portafoglio.setCodiceRapporto(11);
    		portafoglio.setNumeroPolizza("Topolino");
    		portafoglio.setDescrizioneProdotto("Pluto");
    		portafoglio.setDescrizioneOggetto("Pippo");
    		portafoglio.setCodiceStato("Paperone");
    		portafoglio.setDataEffetto(new Date());
    		portafoglio.setDataScadenza(new Date());
    		portafoglio.setPremioLordoAnnuo(BigDecimal.valueOf(2546545.778675));
    		
    		elenco.add(portafoglio);
    		System.out.println("COSTRUTTORE");
    	}
    
    	public Collection getElenco() {
    		return elenco;
    	}
    
    	public void setElenco(Collection elenco) {
    		this.elenco = elenco;
    	}
    	
    	public void rowSelector(RowSelectorEvent event){
    		System.out.println("RowSelector");
    	}
    	
    	public String testAction(){
    		System.out.println("ACTION");
    		return null;
    	}
    	
    }
    Poi ho una seconsa classe chiamata OperazioniTabella che deve recuperare l'oggetto elenco creato e popolato nella classe PopolaTabella e farci delle operazioni sopra che devo ancora definire...

    Sostanzialmente io ho scritto così:

    codice:
    package managedBean;
    
    import java.util.ArrayList;
    import java.util.Collection;
    import managedBean.PopolaTabella;
    
    public class OperazioniTabella {
    	
    	Collection elenco = new ArrayList();
    	
    	public OperazioniTabella(){
    		elenco = PopolaTabella.getElenco();
    		
    	}
    
    }
    Dichiaro un nuovo oggetto elenco di tipo Collection e lo costruisco. poi nel costruttore di tale classe faccio in modo che dentro elenco ci sia il riferimento all'oggetto precedentemente creato nella classe PopolaTabella...ma...Eclipse mi segna errore e dice che devo far diventare statico il metodo getElenco()...

    Perchè ?!?! Cosa c'è che non và tenendolo non statico ?!?! Ho organizzato male la mia archietettura delle classi?

    Sostanzialmente l'applicazione dovrebbe funzionare così: la classe PopolaTabella mi riempie una tabella (in questo caso con una riga sola rappresentata dall'oggetto portafoglio, ogni campo di portafoglio rappresenta il valore di una colonna della tabella) ed un'altra tabella OperazioniTabella che si recupera la Collection rappresentante tutti i record della tabella e li và a modificare

    Please, help me

    Grazie
    Andrea

  2. #2

    Re: Reperire un oggetto creato in un'altra classe

    Originariamente inviato da AndreaNobili
    codice:
    package managedBean;
    
    import java.util.ArrayList;
    import java.util.Collection;
    import managedBean.PopolaTabella;
    
    public class OperazioniTabella {
    	
    	Collection elenco = new ArrayList();
    	
    	public OperazioniTabella(){
    		elenco = PopolaTabella.getElenco();
    		
    	}
    
    }
    ...Eclipse mi segna errore e dice che devo far diventare statico il metodo getElenco()...
    Perchè ?!?! Cosa c'è che non và tenendolo non statico ?!?! Ho organizzato male la mia archietettura delle classi?
    Perchè stai invocando quel metodo come se fosse statico. In realtà devi invocarlo su una istanza della classe PopolaTabella, per come lo hai definito.

  3. #3
    Grazie....ti spiego meglio la situazione così magari mi eviti di fare cavolate e di scrivere codice inutile...

    Ho la classe PopolaTabella che contiene una collezione di oggeti PortafoglioCliente (al momento uno solo). Ogni oggetto in tale collezione rappresenta una riga di una tabella (i campi dell'oggetto rappresentano le colonne della tabella). Quindi al momento ho una tabella contenente una sola riga.
    (Il motivo per cui uso una Collection di oggetti per rappresentare una tabella è semplice, uso IceFaces per visualizzare la tabella ed in IceFaces si fà così )

    Ora per ogni riga della tabella devo prevedere una serie di operazioni (non sò ancora quali...me lo devono ancora dire). Una modifica su un campo della tabella di fatto consiste nel modificare un campo di un'oggetto di tale collezione.

    Secondo te tali operazioni mi conviene implementarle direttamente dentro la classe PopolaTabella o come stò facendo in un'altra classe OperazioniTabella che si và a reperire la collezione e ci opera sopra?

    Tnx

  4. #4
    Originariamente inviato da AndreaNobili
    Ora per ogni riga della tabella devo prevedere una serie di operazioni (non sò ancora quali...me lo devono ancora dire). Una modifica su un campo della tabella di fatto consiste nel modificare un campo di un'oggetto di tale collezione.

    Secondo te tali operazioni mi conviene implementarle direttamente dentro la classe PopolaTabella o come stò facendo in un'altra classe OperazioniTabella che si và a reperire la collezione e ci opera sopra?
    Beh potresti modificare gli oggetti, all'interno della Collection, nella classe PopolaTabella stessa! In questo caso è meglio cambiare il suo nome in "TabellaManager" ad esempio.

    Se invece vuoi proseguire con la tua idea, allora la classe OperazioniTabella deve avere un qualche costruttore o un qualche metodo (dipende da come vuoi definirla) che prende una Collection dall'esterno e quindi modifica gli oggetti al suo interno.

    La scelta deve essere tua.

  5. #5
    Grazie,
    se usassi la seconda scelta di prendere gli oggeti dall'esterno...cosa significa dall'esterno? dalla classe PopolaTabella? Come fare a reperire la Collection da PopolaTabella?

    Grazie
    Andrea

  6. #6
    Originariamente inviato da AndreaNobili
    Grazie,
    se usassi la seconda scelta di prendere gli oggeti dall'esterno...cosa significa dall'esterno? dalla classe PopolaTabella? Come fare a reperire la Collection da PopolaTabella?
    Hai definito il metodo getElenco(), quindi in quel modo ottieni cio' che incapsula l'istanza di PopolaTabella e lo passi a OperazioniTabella.

    P.S. il metodo setElenco non dovrebbe servirti, qualsiasi scelta tu adottassi..

  7. #7
    Originariamente inviato da VincenzoTheBest
    Hai definito il metodo getElenco(), quindi in quel modo ottieni cio' che incapsula l'istanza di PopolaTabella e lo passi a OperazioniTabella.

    P.S. il metodo setElenco non dovrebbe servirti, qualsiasi scelta tu adottassi..
    Si però se dentro la classe OperazioniTabella creassi una NUOVA istanza di PopolaTabella sulla quale chiamassi il metodo getElenco()...

    però dovrei riferirmi ad un'istanza preesistente di PopolaTabella (che contiene già una Collection elenco) e non ad una nuova...è questo che mi turba

  8. #8
    Originariamente inviato da AndreaNobili
    Si però se dentro la classe OperazioniTabella creassi una NUOVA istanza di PopolaTabella sulla quale chiamassi il metodo getElenco()...

    però dovrei riferirmi ad un'istanza preesistente di PopolaTabella (che contiene già una Collection elenco) e non ad una nuova...è questo che mi turba
    Forse non mi sono spiegato bene, per quanto riguarda la tua scelta hai diverse strade:
    codice:
    public class OperazioniTabella {
            private Collection collectionToSet;
    
    	public OperazioniTabella(Collection elenco){
    		this.collectionToSet = elenco;
    		
    	}
            
            ...
    }
    oppure
    codice:
    public class OperazioniTabella {
            private Collection collectionToSet;
    
    	public OperazioniTabella(PopolaTabella p){
    		this.collectionToSet = p.getElenco();
    		
    	}
            
            ...
    }
    e altre ancora.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.