IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Afficher des objets précis d'un vecteur


Sujet :

avec Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Afficher des objets précis d'un vecteur
    Bonjour,

    je programme un carnet d'adresse
    ou j'ai un vecteur qui contient tous mes contacts.
    mes contacts peuvent êtres des instances de trois classes différentes: connaissances, amis et famille.

    je dois pouvoir afficher les contacts qui ne correspondent qu'a un type de classe (connaissances,amis,famille)

    l'utilisateur fait son choix de la classe désirer au clavier, jusqu'ici pas de souci.
    mais je ne sais pas lui afficher juste les contacts qui sont de la classe demandée.

    si qq'un sait comment afficher les objets d'une mm classe contenu dans le vecteur ca serait top

    merci!

  2. #2
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    L'opérateur instanceof est ton ami

    Cdt.

  3. #3
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Prévoir une classe mère Contact dont hérite toutes tes autres classes et possédant une méthode abstraite getType qui sera implémentée de façon différente à chaque fois.

    Autre possibilité jouer sur le getClass plutôt qu'un instanceof qui fait très C dans l'idée.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    J'ai déjà fait un classe mère Contact dont hérite les autres.
    Mais j'ai dans mon vecteur des objets de trois classes différentes et je ne veux afficher a l'utilisateur que la classe qu'il aura choisi.
    Du coup le instanceof ou getclass ne me retourne pas ce que je veux dans mon vecteur.
    Par contre la methode getType() pourrait marcher je pense, il faut que je l'implemete différemment selon les différentes classes. Mais j'ai un peu de mal a voir quoi mettre dans ma methode selon la classe pour pouvoir l'appeller dans mon sout et qu'elle m'affiche ce que je veux...

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2012
    Messages
    3 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3 020
    Points : 16 092
    Points
    16 092
    Par défaut
    Bonjour, je ne vais pas vraiment répondre à la question, mais pourquoi avoir un seul vecteur qui contient trois types d'objets?

    Cela me parait compliqué à gérer.

    Première idée : Ne peux tu pas avoir, soit trois vecteur contenant chacun un seul type de contacts? Un vecteur connaissance, un vecteur ami, un vecteur famille? Le problème alors c'est que si tu veux rajouter une catégorie, tu dois rajouter un vecteur. Mais bon, ça se fait, c'est pas comme si on avait des limites sur la mémoire et la puissance de calcul de nos jours, si?


    Deuxième idée: avoir un seul type d'objet : Contact. Avec une propriété : catégorie (et tu mets une enum quelque part pour définir les différentes catégories possibles). Comme ça, tous tes contacts sont du même type. Après, cela prends sans doute plus de temps de récupérer seulement ceux d'une certaine catégorie. Tu es obligé de boucler sur tous les éléments de ta liste et de les sortir un à un...

    Troisième idée : vive la base de données. mais là j'imagine que je vais trop loin

  6. #6
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    en fait la c'est un exercice avec un cahier des charges précis que nous donne les formateurs donc on doit s'y tenir

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 22
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par kabane.cie Voir le message
    J'ai déjà fait un classe mère Contact dont hérite les autres.
    Mais j'ai dans mon vecteur des objets de trois classes différentes et je ne veux afficher a l'utilisateur que la classe qu'il aura choisi.
    Du coup le instanceof ou getclass ne me retourne pas ce que je veux dans mon vecteur.
    Par contre la methode getType() pourrait marcher je pense, il faut que je l'implemete différemment selon les différentes classes. Mais j'ai un peu de mal a voir quoi mettre dans ma methode selon la classe pour pouvoir l'appeller dans mon sout et qu'elle m'affiche ce que je veux...
    Carhiboux, je ne vois pas pourquoi tu lui déconseilles un vecteur comportant 3 types différents. Je l'ai utilisé plusieurs fois, quand tu as une classe mère pour les différents types, cela ne semble pas du tout illogique.

    Pour le getType, tu peux par exemple redéfinir la méthode à chaque fois, qui renvoie par exemple un String "connaissance", "famille" ou "ami".

    Pour le getClass, tu peux t'en servir de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    String typeDemande = "Connaissance"
    Contact contact = vector.elementAt(i);
    if (contact.getClass().getName().equals("tonpackage" + typeDemande)) {
    // On fait quelque chose si c'est bien le type demandé
    }

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    le truc c'est après quand je veux afficher le répertoire avec juste les connaissances par exemple je fais comment?
    dans mon sout je mets quoi? System.out.println(rep1....????)

  9. #9
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Citation Envoyé par kabane.cie Voir le message
    Par contre la methode getType() pourrait marcher je pense, il faut que je l'implemete différemment selon les différentes classes. Mais j'ai un peu de mal a voir quoi mettre dans ma methode selon la classe pour pouvoir l'appeller dans mon sout et qu'elle m'affiche ce que je veux...
    Tu as 2 façons de faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    public abstract class Contact
    {
    	// ...
     
            public Contact(){}	
     
    	public abstract String getType();
    }
     
    public class Ami
    {
    	// ...
            private final String type = "ami";	
     
    	public String getType() { return type; }
    }
    // Pareil pour les autres
    Ici on code en dur dans chaque classe son type.

    Ou alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    public abstract class Contact
    {
    	String type;
     
    	public Contact(String type)
    	{ 
    		this.type = type; 
    	}
     
    	public String getType()
    	{ 
    		return type; 
    	}
    }
     
    public class Ami
    {
    	// ...
    	public Ami( String type )
    	{
    		super(type);
    	}
    }
    Dans ce cas il faut initialiser la variable à la construction de l'objet. L'appel à getType() appellera la méthode de la classe contact.

    A toi de voir

  10. #10
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    oui ca j'avais compris le principe et comment mais après dans mon main qd je veux afficher juste "amis" je mets System.out.println(rep1.getType(amis));??? et ca devrais marcher??

  11. #11
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Citation Envoyé par kabane.cie Voir le message
    oui ca j'avais compris le principe et comment mais après dans mon main qd je veux afficher juste "amis" je mets System.out.println(rep1.getType(amis));??? et ca devrais marcher??
    Il en manque un peu encore.

    Tu parcours ta liste en faisant getType() à chaque fois et tu prends que ceux qui t’intéresse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    for (int i=0;i<list.lenght;i++)
        if (list.get(i).getType.equal("ami"))  // ici tu peux utiliser une variable qui contient ce que la personne à tapé au clavier.
           // Ici c'est un ami, tu fais ce que tu veux

  12. #12
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Alors j'ai bien fais la méthode getType qui est redéfinie dans chaque classe,
    dans mon main j'ai mis ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for (int b = 0; b < rep1.getRepertoire().size(); b++){
         if (rep1.getRepertoire().get(i).getType().equals("connaissance")){                                             
         System.out.println(rep1.getRepertoire().getType());
         }
    }
    sauf que le getType() dans mon sout il n'en veut pas et me dit:
    Symbol: methode getType()
    Location: classe Vector<Contact>


  13. #13
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Bah tu écris une fois
    if (rep1.getRepertoire().get(i).getType()...
    et après tu fais
    if (rep1.getRepertoire().getType()...
    Tu sélectionnes pas d’élément dans ton répertoire donc c'est normal qu'il ne trouve rien.

  14. #14
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    tu va me prendre peut-être pour un neuneu mais tant pis faut bien débuter un jour lol
    comment je fais pour qu'il me sélectionne tous les objets du type "connaissance" dans mon répertoire?
    qu'es ce que je dois rentrer de plus dans ce que j'ai déjà mis?

  15. #15
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Points : 2
    Points
    2
    Par défaut solution
    Ayais!!!
    j'ai trouvé comment faire simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for(Contact c: rep1.getRepertoire()){                                       
         if(c.getClass().getSimpleName().equals("Connaissances")){
             System.out.println(c);
    et merci pour le coup de main!!!!!!!!!!!!!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Table qui affiche des "objets"
    Par Raiden1234 dans le forum JSF
    Réponses: 2
    Dernier message: 25/06/2009, 13h39
  2. Récupérer et afficher des objets complexes
    Par basket dans le forum Langage
    Réponses: 3
    Dernier message: 17/04/2009, 19h24
  3. Réponses: 6
    Dernier message: 14/11/2007, 15h51
  4. Réponses: 5
    Dernier message: 03/09/2007, 20h36
  5. Réponses: 7
    Dernier message: 17/03/2005, 11h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo