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 :

Accès au contact


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2015
    Messages : 4
    Par défaut Accès au contact
    Bonjour,
    Je débute en Java, j'espére que j'utiliserai les bons termes.
    Voila mon probléme :
    Création d'un objet "Affaire" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class Affaire {
        static private int compteurAffaire; //Compteur Nbre d'Affaire en cours
        String affaire; //Nom de l'Affaire
        ArrayList<Contact> contacts = new ArrayList();
     
    public Affaire(String affaire) {
            compteurAffaire++;
            this.affaire = affaire;
    Puis y ajoute des contacts par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        public void addContact (String nom){
            contacts.add(new Contact(nom));
        }
    Je n'arrive pas à accéder au contact directement depuis la class Contact. Je suis contraint d'y accéder depuis la class Affaire.

    La classe Contact :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class Contact {
        String nom = "Inconnu";
     
        Contact(String nom) {
            this.nom = nom;
        }
    Dans le main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class Principale {
     
        public static void main (String[] args){
            Affaire test = new Affaire("UneAffaireQuiNeRoulePas");
            test.addContact("Philippe");
    Quelque chose m'échappe mais, évidement, je n'arrive pas à définir quoi.
    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Citation Envoyé par phdenaujan Voir le message
    Je n'arrive pas à accéder au contact directement depuis la class Contact. Je suis contraint d'y accéder depuis la class Affaire.
    D'où tu n'arrives pas à accéder au contact ? Quel contact ? Tu parles d’accéder à un contact d'une affaire depuis une méthode qui n'a qu'une référence sur une affaire, c'est ça ? Genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void jeNeSaisQuelTraitement(Affaire affaire) {
     
       Contact contact = /* là j'aimerais bien pouvoir accèder à un contact de l'affaire passée en paramètre */
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2015
    Messages : 4
    Par défaut
    Bonjour Joel,
    En fait, pour acceder aux contacts créés, je dois passer par un Getter situé dans la class Affaire qui appelle un Getter de la class Contact.

    Méthode de la class Affaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      public void getContacts(String info) {
            for (int i=0 ; i<contacts.size(); i++){
                System.out.println(contacts.get(i).getContact(info));
            }
        }
    Methode dans la class Contact
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public String getContact(String info) {
            String retourInfo = "Inconnu";
            switch (info) {
                case "Nom" : retourInfo = nom; break;
                case "Prenom" : retourInfo = prenom; break;
                case "entreprise" : retourInfo = entreprise; break;
                case "fonction" : retourInfo = fonction; break;
                case "TelFixe" : retourInfo = TelFixe; break;
                case "TelMob" : retourInfo = TelMob; break;
                case "mail" : retourInfo = mail; break;
    Cela ne me semble pas très optimisée comme manière de faire.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Normalement, pour commencer, tu devrais avoir des méthodes dans Contact pour récupérer des informations d'un contact, dont tu as la référence :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Contact {
        String nom = "Inconnu";
     
        public Contact(String nom) {
            this.nom = nom;
        }
     
        public String getNom() {
            return nom;
        }
     
    }
    Ensuite, dans la classe Affaire, il faudrait avoir des méthodes pour récupérer les contacts. Là, ça dépend de ce que tu as besoin.

    Tu peux avoir, une méthode qui permet de récupérer l'ensemble des contacts d'une Affaire :
    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
    public class Affaire {
        static private int compteurAffaire; //Compteur Nbre d'Affaire en cours // attention au passage à ce genre de chose en multithread, préférez un AtomicInteger
        String affaire; //Nom de l'Affaire
        List<Contact> contacts = new ArrayList();
     
        public Affaire(String affaire) {
            compteurAffaire++;
            this.affaire = affaire;
        }
     
        public List<Contact> getContacts() {
             return Collections.unmodifiableList(contacts);
        }
     
    }
    Si tu as besoins de la liste des noms des contacts, il suffira de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Affaire affaire = ... /* on a une référence d'affaire, dont on veut la liste des noms des contacts */
    List<String> nomDesContacts = affaire.getContacts().stream().map(Contact::getNom).collect(Collectors.toList())

    Si tu as souvent besoin d'avoir ce genre de listes pour différentes informations des contacts, tu ajouter une méthode à Affaire :

    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
    public class Affaire {
     
     static private int compteurAffaire; //Compteur Nbre d'Affaire en cours // attention au passage à ce genre de chose en multithread, préférez un AtomicInteger
        String affaire; //Nom de l'Affaire
        List<Contact> contacts = new ArrayList();
     
        public Affaire(String affaire) {
            compteurAffaire++;
            this.affaire = affaire;
        }
     
        public List<Contact> getContacts() {
             return Collections.unmodifiableList(contacts);
        }
     
        public <T> List<T> getContactInformationList(Function<Contact, T> function) {
                  return contacts.stream().map(c->function.apply(c)).collect(Collectors.toList());
        }
     
    }
    Et ensuite tu pourras écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Affaire affaire = ... /* on a une référence d'affaire, dont on veut la liste des noms des contacts */
    List<String> nomDesContacts = affaire.getContactInformationList(Contact::getNom);
    Pour avoir la liste des noms,
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<String> telDesContacts = affaire.getContactInformationList(Contact::getPhoneNumber);
    si tu as bien une méthode public String getPhoneNumber() dans Contact

    voire même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<Integer> ageDesContacts = affaire.getContactInformationList(Contact::getAge);
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2015
    Messages : 4
    Par défaut
    Bonjour,
    Merci pour ces infos. J'ai encore du chemin à parcourir...
    En tout cas, je retiens qu'il faut passer par la class Affaire pour accéder aux contacts.
    Encore merci et probablement à bientôt pour de nouvellles questions.
    Philippe.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par phdenaujan Voir le message
    En tout cas, je retiens qu'il faut passer par la class Affaire pour accéder aux contacts.
    Attention ! Oui, pour accéder aux contacts d'une affaire, mais rien ne t'empêche d'avoir une liste de contact par ailleurs pour accéder à n'importe quel contact directement. En plus, ça permettrait de pouvoir partager un même contact entre deux affaires.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. pb accès anniversaire contact FB
    Par elmarco06 dans le forum Android
    Réponses: 0
    Dernier message: 06/05/2014, 17h12
  2. Acces aux contacts de la sim
    Par asma2011 dans le forum C#
    Réponses: 0
    Dernier message: 18/04/2011, 23h37
  3. Accès aux contacts d'un compte Google
    Par molesqualeux dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 08/03/2010, 10h56
  4. Problème d'accès formulaire de contact
    Par Mystic26 dans le forum Langage
    Réponses: 7
    Dernier message: 16/09/2005, 16h47

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