Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Aiuto con questo metodo plz...

    public class Prodotto {
    public String codice;
    public String titolo;
    public double prezzo;
    public String cfAut;
    public Collection contributi= new LinkedList();
    public Collection richiesti= new LinkedList();




    public Prodotto(String codice, String titolo, double prezzo, String cfAut) {

    this.codice=codice;
    this.titolo=titolo;
    this.prezzo=prezzo;
    this.cfAut=cfAut;

    }

    public Collection<Contributo> contributi(){

    for(Iterator iter=contributi.iterator(); iter.hasNext() {
    Contributo c= (Contributo) iter.next();

    if(c.codice == codice) {
    richiesti.add(c);

    return richiesti;
    }
    }


    return null;

    }

    Qualcuno sa come implementare il metodo contributi() in modo che restituisca Dato un oggetto di classe Prodotto è possibile conoscere l'elenco dei contributi che lo compongono? Tra le richieste c'è quella di non passare il Prodotto al metodo direttamente...
    La mia idea è quella che vedete ma purtroppo non funziona...
    Voi come fareste?

  2. #2

    Re: Aiuto con questo metodo plz...

    Originariamente inviato da Christine87

    if(c.codice == codice) {
    richiesti.add(c);

    return richiesti;
    }
    Per confrontare gli oggetti devi usare il metodo equals.

  3. #3
    Grazie per la risposta
    Anche con equals la sostanza non cambia...quando vado a testare il metodo ottengo una bella null pointer exception...
    Come risolveresti?
    Tra l'altro, un altra domanda...Come si fa ad invocare un metodo definito in un'altra classe senza definire una variabile di quella classe? E' possibile

  4. #4
    Originariamente inviato da Christine87
    Anche con equals la sostanza non cambia...quando vado a testare il metodo ottengo una bella null pointer exception...
    Come risolveresti?
    Perchè evidentemente la lista contributi contiene alcuni valori nulli, oppure qualche oggetto c ha il campo codice nullo. Ipotizzando che la causa dell'eccezione è la seconda, modifica il confronto in questo modo:
    codice:
    if( c.codice != null && codice.equals(c.codice) )
    Originariamente inviato da Christine87
    Tra l'altro, un altra domanda...Come si fa ad invocare un metodo definito in un'altra classe senza definire una variabile di quella classe? E' possibile
    Forse intendi dire senza istanziarla. Se è questo ciò che intendi allora il metodo deve essere statico.

  5. #5
    Anche io avevo avuto l'idea del metodo static ma mi hanno bocciato l'idea dicendomi che in questo contesto non posso usare metodi statici...
    Il problema è che se inizializzo una variabile Pippo pippo=null
    e poi chiamo il metodo della classe pippo.paperino(parametro) mi da un sacco di errori...


    Avevo provato aggiungendo il confronto...Io sospetto invece che il problema sia la variabile codice ed il suo valore...Infatti risolto il problema del null pointer mi trovo con risultati fantasiosi come uscite del metodo...E' possibile?

  6. #6
    Originariamente inviato da Christine87
    Il problema è che se inizializzo una variabile Pippo pippo=null
    e poi chiamo il metodo della classe pippo.paperino(parametro) mi da un sacco di errori...
    E' ovvio, in quanto pippo non viene istanziato.

    Comunque, cerca di essere più chiaro. Cosa devi fare esattamente?

  7. #7
    Si scusa hai ragione magari non mi sono spiegata bene...E' solo che devo risolvere questo problema e sto impazzendo...

    Dunque io devo fare un programma java che gestisce un editoria...
    Nella classe Editore, che è la classe principale del mio progetto, ho definito un metodo (che funziona) che, dato il codice fiscale di un autore mi trova l'autore...
    A questo punto poi ho creato la classe Prodotto che riceve come parametri, tra gli altri, proprio il codice fiscale di un autore.
    Ora, nella classe Prodotto dovrei creare un metodo getAutore() che mi restituisce l'autore.
    E, ovviamente, Non posso usare variabili o metodi static....
    Tu come risolveresti?

  8. #8
    Originariamente inviato da Christine87
    Ora, nella classe Prodotto dovrei creare un metodo getAutore() che mi restituisce l'autore.
    Tu come risolveresti?
    Se intendi ottenere tutti i dati dell'autore del prodotto, ti conviene definire una classe Autore e quindi al posto del campo cfAut ci metti un campo autore di tipo Autore. In questo modo, a livello di codice, implementi la relazione di creazione che, concettualmente, esiste tra un prodotto ed un autore.

    N.B. In generale, ti conviene rendere la visibilità dei campi di una classe private. Fa parte del buon principio dell'Information Hiding.

  9. #9
    Fosse stato per me avrei fatto anche io così, sia per i campi privati che per il passaggio di un autore direttamente ma le specifiche del progetto mi impongono di passare una stringa e non un Autore...E qui nascono i problemi...

  10. #10
    Originariamente inviato da Christine87
    Fosse stato per me avrei fatto anche io così, sia per i campi privati che per il passaggio di un autore direttamente ma le specifiche del progetto mi impongono di passare una stringa e non un Autore...E qui nascono i problemi...
    Ok. Ma questo metodo getAutore come è definito nel progetto?
    Cerca di fornire segnatura ed astrazione.

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.