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

    Come implementare Persone per Set<Persone>

    Salve a tutti,

    ho un dubbio e vorrei chiedervi chiarimenti.

    In una classe "A" implemento un metodo che restituisce un Set<Persone>;

    Il mio problema è come implementare "Persone".

    Persone dovrebbe permettere l'inserimento solo di Pippo, Pluto e Paperino.

    Quindi nel metodo in "A", quando mi creo un Set (Set<Persone> x = new HashSet<Persone>() che devo restituire, come faccio ad inserire solo Pippo,Pluto o Paperino?

    Ricapitolando con un esempio, quello che che vorrei fare è
    if(valore<0)
    x.add(Paperino);
    if(valore>1)
    x.add(Pippo)
    if(valore=1)
    x.add(Pluto)

    con Pippo, Pluto e Paperino di tipo Persone. (creare un oggetto di tipo Persone chiamandolo Paperino o Pluto o Pippo non penso sia corretto, perché appunto io non posso creare Topolino di tipo Persone ed inserirlo, ma devo poter inserire solo quei 3 nomi).

    Vi ringrazio anticipatamente

    Saluti

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Pippo, Pluto e Paperino sono classi derivate dalle classe "Persone"? o sono direttamente istanze della classe "Persone"?

  3. #3
    Originariamente inviato da c0der
    Pippo, Pluto e Paperino sono classi derivate dalle classe "Persone"? o sono direttamente istanze della classe "Persone"?
    Pippo , Pluto , Paperino potrebbero essere degli enum di Persone (o struct)...come dovrei procedere?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Ah ok devi ancora deciderlo.
    Ma questi Pippo e Pluto e Paperino in cosa differiscono?
    Se differiscono esclusivamente per un non meglio determinato tipo (un flag, un enum, una stringa) allora fai che il costruttore di Persone prenda come argumento un enum che definisce i tre tipi.
    Se invece differiscono per metodi, campi, allora devi usare la derivazione.

  5. #5
    Originariamente inviato da c0der
    Ah ok devi ancora deciderlo.
    Ma questi Pippo e Pluto e Paperino in cosa differiscono?
    Se differiscono esclusivamente per un non meglio determinato tipo (un flag, un enum, una stringa) allora fai che il costruttore di Persone prenda come argumento un enum che definisce i tre tipi.
    Se invece differiscono per metodi, campi, allora devi usare la derivazione.
    L'enum dovrebbe fare al caso mio.

    Quindi per inserire nel set un oggetto persona dovrei fare: x.add(new Persona(0))?
    E la classe persona come dovrebbe essere implementata ?

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Ti faccio l'esempio.
    Ho usato Persona al singolare perché di solito le classi sono al singolare se rappresentano 1 cosa. Chiamerai invece persone l'hashset invece di chiamarlo "x".
    Quindi farai:
    persone.add(new Persona(TipoPersona.Paperino));

    codice:
    enum TipoPersona {
        Paperino, Pippo, Pluto
    }
    
    class Persona {
        private TipoPersona tipoPersona;
    
        public Persona(TipoPersona tipoPersona) {
            this.tipoPersona = tipoPersona;
        }
        
        public void setTipo(TipoPersona tipoPersona) {
            this.tipoPersona = tipoPersona;
        }
        
        public TipoPersona getTipo() {
            return tipoPersona;
        }
    }

  7. #7
    Originariamente inviato da c0der
    Ti faccio l'esempio.
    Ho usato Persona al singolare perché di solito le classi sono al singolare se rappresentano 1 cosa. Chiamerai invece persone l'hashset invece di chiamarlo "x".
    Quindi farai:
    persone.add(new Persona(TipoPersona.Paperino));

    codice:
    enum TipoPersona {
        Paperino, Pippo, Pluto
    }
    
    class Persona {
        private TipoPersona tipoPersona;
    
        public Persona(TipoPersona tipoPersona) {
            this.tipoPersona = tipoPersona;
        }
        
        public void setTipo(TipoPersona tipoPersona) {
            this.tipoPersona = tipoPersona;
        }
        
        public TipoPersona getTipo() {
            return tipoPersona;
        }
    }
    Grazie mille per l'esempio...

    Ps. Ma volendo posso creare solo l'enum senza creare una classe Persona?

    enum Persona {
    Paperino, Pippo, Pluto
    }

    E poi inserire facendo

    persone.add(Persona.Paperino);

    ???

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Originariamente inviato da Donatigno
    Ma volendo posso creare solo l'enum senza creare una classe Persona?
    Certo che puoi, dipende da cosa devi fare.
    L'HashSet andrà dichiarato però non più di tipo "Persona" ma di tipo "TipoPersona", cioè l'enum.
    Inoltre, così facendo, se vuoi che che in "persone" ci possano essere più elementi di tipo Pluto per esempio, devi usare un ArrayList invece di un HashSet.
    codice:
    ArrayList<TipoPersona> persone = new ArrayList<TipoPersona>();
    persone.add(TipoPersona.Paperino);
    persone.add(TipoPersona.Paperino);
    persone.add(TipoPersona.Pluto);        
    persone.add(TipoPersona.Pluto);                
    for (TipoPersona tipo: persone)
        System.out.println(tipo);

  9. #9
    Ora ho le idee piu chiare, mi hai aiutato tantissimo.

    Grazie mille!

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.