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

Java Discussion :

Récupérer l'attribut d'un objet


Sujet :

Java

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    149
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 149
    Points : 56
    Points
    56
    Par défaut Récupérer l'attribut d'un objet
    Bonjour à tous !

    J'ai une petite question à vous poser et qui me bloque pour finir la plupart de mes TP java !

    Est-ce possible de récupérer l'attribut d'un objet (en gras) en donnant seulement un numéro ?

    COMMANDE cmd1 = new COMMANDE (cli1);

    Par exemple, j'aimerais afficher les caractéristiques d'une commande rien qu'en saisissant le numéro de la commande... Donc en gros pouvoir récupérer cmd1

    J'ai pensé à quelque chose de ce genre :

    // On récupère le numéro saisi par l'utilisateur
    System.out.println("Entrer le numéro de commande recherché : \n");
    noCmd = s.nextInt();

    // On vérifie que le numéro existe, on recherche cmd1 et on affiche les caractéristiques en gros pour avoir ça : cmd1.AfficheCmd();

    Je sais pas si c'est bien clair ^^ Pourriez-vous m'aider ?!?
    Merci d'avance !

  2. #2
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Bonjour,

    Tu dois gérer cela toi-même, en créant une table d'enregistrement par exemple.
    En clé, tu peux très bien utiliser un Integer, un Long ou une String selon tes besoins.

    Cette table (Map) devra juste être accessible à la création de chacune de tes commandes et lorsque tu veux en récupérer une.

    Si tu travailles en multi-threads, fait attention à bien synchroniser les enregistrements dans ta table.

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    149
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 149
    Points : 56
    Points
    56
    Par défaut
    Merci pour ta réponse rapide !

    Mais malheureusement ce que tu me dis est du chinois, je n'ai pas beaucoup d'expérience dans la programmation java !

    Déjà, je créé mes commandes statiquement, je n'ai pas de BDD c'est un petit TP de découverte du Java !

    J'ai fait des recherches sur le mapping et voilà ce que j'ai trouvé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    HashMap<Integer, String> map = new HashMap<Integer, String>();
     
    map.put("1", "cmd1");
    map.put("2", "cmd2");
    map.put("3", "cmd3");
    Puis pour récupérer en rapport avec mon exemple
    Et il me renverra la commande correspondante ??

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    eux si tu utilise des int pour identifier les commandes fait un tableau

    si ça ne change jamais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String[] cmd= new String[10]();
    la commades ce trouve comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.out.println("la commande est : "+cmd[1]);
    sinon utilise un tableau dinamique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List<String> cmd = new ArrayList<String>();
    la commande ce trouve comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.out.println("la commande est : "+cmd.get(1));

  5. #5
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Le code que tu as trouvé est correct. Tu dois juste faire un petit ajustement pour ton cas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Map<Integer, Commande> map = new HashMap<Integer, Commande>();
    map.put(1, cmd1);
    map.put(2, cmd2);
    map.put(3, cmd3);
    Un Map est une table qui associe une clé (unique dans la table) à une valeur. Dans le code que j'ai modifié, la clé est de type Integer (l'identifiant) et la valeur est de type Commande (le type que tu souhaites stoker).
    Tu peux ajouter des objets via la méthode "put(clé, valeur)" et les récupérer via la méthode "get(clé)".

    En revanche, je te déconseille d'utiliser une List car si jamais tu retires une de tes Commande, les index vont être décalés et tu seras perdu.

    Comme tu découvres le Java, tu peux oublier ma remarque sur la synchronisation pour l'instant

    Et si ce n'est pas encore clair, n'hésite pas à poser des questions.

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    149
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 149
    Points : 56
    Points
    56
    Par défaut
    Merci pour votre aide ! C'est une bonne chose à savoir, ça va m'aider pour le reste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Scanner s = new Scanner( System.in );
     
    // On récupère le numéro saisi par l'utilisateur
    System.out.println("Entrer le numéro de commande recherché : \n");
    int noCmd = s.nextInt();
    System.out.println("Les caractéristiques de la commande n° : " + noCmd + " sont : \n Date de la commande : "
                                + map.get(noCmd).GetDateCmd() + "\n");
    Par contre les galères continuent ! J'aimerai aussi afficher en même temps que la date, le client qui a passé cette commande !

    Dans ma classe CLIENT, j'ai un vecteur "liencommandeclient"
    Avec une méthode AffecteCom() qui permet d'affecter une commande à un client :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     public void AffecteCmd(COMMANDE Macom)
         {  
           liencommandeclient.add(Macom);
         }
    Dans mon main j'ai En cours on m'a dit de rajouter cela dans ma classe COMMANDE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Permettra le lien 0...N entre la classe CLIENT & COMMANDE
        public CLIENT lienComCli;
    Et à vrai dire, je n'ai pas saisi à quoi ça pourrait me servir ...
    Comment alors afficher également le nom du client ayant passer la commande choisie ?

    Dsl là c'est vraiment le fouilli ^^ Si vous ne comprenez pas, c'est normal !!

  7. #7
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Si j'ai bien compris (ce qui n'est pas gagné ), ta méthode affecteCmd devrait se trouver dans ta classe Client plutôt que dans ta classe Commande.

    Soit c'est une erreur, soit c'est un problème de compréhension je pense.

  8. #8
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    149
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 149
    Points : 56
    Points
    56
    Par défaut
    Oui elle est bien dans ma classe CLIENT !

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/06/2014, 22h23
  2. Réponses: 2
    Dernier message: 16/02/2014, 15h53
  3. Réponses: 1
    Dernier message: 23/01/2013, 16h09
  4. Bases objet : récupérer des attributs de plusieurs objets
    Par olivier57b dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 17/06/2012, 21h30
  5. Récupérer l'attribut d'un objet à partir d'une servlet
    Par Road.Runner dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 21/06/2009, 19h13

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