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

Langage Java Discussion :

Annuaire des contacts : problème de conception.


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 17
    Par défaut Annuaire des contacts : problème de conception.
    Bonjour,

    Je souhaite créer une application en java qui permette de gérer un annuaire des contacts. Pour chacun des contacts, on a son adresse postale, certains nous ont donné leur numéro de téléphone. D'autres leur adresse électronique. Enfin, pour quelques-uns, on dispose des deux.
    Voici comment j'ai procédé pour la résolution du problème : je pense créer une classe abstraite Contact qui contiendra les champs privés suivants : nom, prenom, adresse. Ensuite je vais créer 3 classes qui héritent de la classe Contact.
    - La classe ContactAvecTel qui contiendra le champ privé tel
    - La classe ContactAvecMail qui contiendra le champ privé mail
    - La classe ContactTelMail qui contiendra les champs privés tel et mail
    Seulement dans le cas où un contactAvecTel nous communiquera son mail, je ne pourrai plus l'ajouter.
    Alors, je me demande s'il ne fallait pas créer tout simplement une seule classe Contact qui ne sera pas abstraite et qui contiendra les 5 champs : nom, prenom, adresse, tel, mail. Donc, il faut s'attendre par exemple que pour une personne sans tél, le champ tél sera initialisé à null. Et à mon avis ceci aura des conséquences sur les fonctions de recherche notamment les critères de recherche.

    Aussi pour le champ adresse, je souhaiterai ajouter le champ ville, le champ codePostale et le champ pays dans le cas où le contact est étranger. Donc le champ adresse ne contiendra que la rue, résidence, bâtiment, étage.

    A noter, que je vais ajouter les contacts dans une liste. Je ne sais pas s'il faut utiliser une liste ordonnée ou une liste non ordonnée. Je ne vois pas l'intérêt d'utiliser une liste ordonnée car ici on n'a pas des chiffres. J'ai pensé à une liste ordonnée car dans les annuaires papiers les contacts sont classés par ordre alphabétique. Mais en programmation, on n'a pas besoin car on utilise des fonctions de recherches.
    En ce qui concerne les fonctions :

    - lireContact() -> consultation
    - ajouterContact(Contact contact)
    - modifierAdresse(Contact contact, String adresse, String codePostal, String ville, String pays) ->l'adresse mentionnée dans les paramètres de la fonction est la nouvelle adresse pour le premier paramètre contact qui existe déjà parmi nos contacts.
    Là j'ai 3 paramètres de plus et c'est pourquoi je vous ai posé la question ci-dessus au sujet de la gestion de l'adresse postale.
    - modifierTel(Contact contact, String tel)
    - modiiferMail(Contact contact, String mail)
    - modifierNom(Contact contact, String nom)
    - modifierPrenom(Contact contact, String prenom)
    - rechercherContact(String nom) -> résultat = liste de contacts
    - rechercherContact(String tel) -> un seul résultat envoyé
    - rechercherContact(String mail) -> un seul résultat envoyé
    - rechercherContact(String mail, String tel) -> un seul résultat envoyé
    - supprimerContact(Contact contact)

    Je vous remercie d'avance de m'éclaircir les points qui me posent problème car je ne peux pas commencer le développement de l'application tant que la partie conception n'est pas claire pour moi.

    Batman

  2. #2
    Membre Expert 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
    Par défaut
    Salut,

    je pense créer une classe abstraite Contact qui contiendra les champs privés suivants : nom, prenom, adresse. Ensuite je vais créer 3 classes qui héritent de la classe Contact.
    - La classe ContactAvecTel qui contiendra le champ privé tel
    - La classe ContactAvecMail qui contiendra le champ privé mail
    - La classe ContactTelMail qui contiendra les champs privés tel et mail
    Premier point, si dans ta classe Contact tu définies tous tes attributs en private il faut bien voir que ces champs ne seront pas accessible par tes sous classes, il est donc préférable de les déclarer en protected pour éviter ce problème.

    Ensuite pour voir si tu as vraiment besoin d'utiliser l'héritage il faut se poser les bonnes questions. L'héritage servant à définir une spécification par rapport à la classe de base, on peut se poser la question

    "Est-ce qu'on contact AVEC Email est fondamentalement différent d'un contact SANS Email ?"
    "Est-ce que j'ai besoin de faire des traitements différents si mon contact n'a pas d'Email?"

    On pourrait très bien imaginer des cas où effectivement ce serait le cas, mais ici je ne suis pas vraiment convaincu Ça reste un contact.

    Il est donc préférable de tout mettre dans une classe Contact comme tu le dis.

    Ensuite tu dois définir quels sont les attributs qui pour ton sont indispensable à tes yeux pour que ton Contact en soit vraiment un. Effectivement un contact sans N° de téléphone ce n'est pas vraiment un contact.

    Pour rendre ces champs "Obligatoire" tu peux simplement écrire un constructeur qui prends en paramètres tous ces champs et dès lors, il sera impossible de créer un contact qui ne respecte pas ces "pré requis".

    Ensuite rien ne t’empêche de définir autant de constructeur que tu veux avec en plus tous les paramètres qui sont "optionnels".

    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
     
    public class Contact{
     
      // obligatoire
      private String nom;
      private String prenom;
      private String telephone;
     
      //Optionnel
      private String adresse;
      private String email;
     
     
      public Contact( String nom, String, prenom, String telephone){..}  // Constructeur minimal de ta classe
     
      public contact( String nom, String, prenom, String telephone, String adresse ){..} // Constructeur incluant un attribut optionnel
     
      public contact( String nom, String, prenom, String telephone, String adresse, String  email ){..} // Constructeur incluant un attribut optionnel
    }
    De cette manière tu définis le minimum requis pour ta classe, tout en laissant la possibilité de renseigner les champs optionnels plus tard (via les setter ou des méthodes prévues à cet effet)

    A partir ce cette base tu peux la faire évoluer à ta guise !

    Ici le champ adresse est une simple String (pas très pratique) mais rien ne t’empêche de créer une classe "Adresse" qui contiendra plusieurs champs (N° de voie, Ville, etc..) et de modifier ta classe Contact en conséquence.

    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
    public class Contact{
    
      // obligatoire
      private String nom;
      private String prenom;
      private String telphone;
    
      //Optionnel
      private String adresse;
      private Adresse email;
    
    ...
    
      public contact( String nom, String, prenom, String telephone, Adresse adresse )
    
    }
    Maintenant si tu veux te construire un petit annuaire de contact, et bien on va créer un classe !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class Annuaire {
     
      private List<Contact> listeContact;
    }
    etc, etc..

    Il est plus simple de penser petite brique par petite brique plutôt que d'essayer de tout faire en même temps.

    Ici tu as tes petites briques de base, et il te reste maintenant à implémenter la partie fonctionnelle. Qu'est-ce que ces petite briques sont censés pouvoir faire?

    On doit pouvoir ajouter/supprimer/modifier un contact, ajouter/rechercher/supprimer un contact dans l'annuaire.. Pour ça on utilise des interfaces. Ces interfaces représentent une sorte de contrat que la classe qui l'implémente se doit de respecter.

    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
     
    public interface IAnnuaire {
     
      public void ajouterContact( Contact contact );
      public void supprimerContact( Contact contact );
     
      public List<Contact> rechercherContactParNom( String nom ); // il peut y avoir plusieurs contacts avec le même nom de famille
     
    ...
     
    }
     
    public class Annuaire implements IAnnuaire 
    {
      ...
    }
    Ici ta classe Annuaire sera obliger d'implémenter chacune des méthodes définies dans l’interface IAnnuaire.

    Il est évident que tout ce que je décris est une version "simplifié" que ce va être ton travail en réalité, mais je pense que tu as tous les éléments pour pouvoir commencer à coder

    Cdt.

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 17
    Par défaut
    Je tiens à vous remercie pour votre réponse. C'était très claire. Cela m'a aidé d'avancer dans ma programmation.
    Je mettrai le code en ligne dès que j'aurai fini.

Discussions similaires

  1. Gestion des droits sur les annuaires de contacts.
    Par fancio dans le forum Configuration
    Réponses: 3
    Dernier message: 11/07/2011, 11h18
  2. Réponses: 4
    Dernier message: 13/04/2011, 12h11
  3. [Cryptographie] Problème de conception pour crypter des adresses mail
    Par Le Barde dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 10/03/2011, 23h59
  4. probléme de conception des salle modulable dans un diagramme de classe
    Par sampaiX dans le forum Diagrammes de Classes
    Réponses: 2
    Dernier message: 21/04/2010, 01h18
  5. Gestion des départements problème de conception
    Par snoopy69 dans le forum Modélisation
    Réponses: 7
    Dernier message: 11/10/2005, 14h08

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