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 :

Problème de Conception


Sujet :

Langage Java

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Problème de Conception
    Bonjour, je voudrais avoir un avis pour savoir si ma conception est bonne ou non. Ca fait un bail que je n’ai pas programmé donc excusez moi si mes questions sont stupides. J’essaie de faire un programme de Location Immobilière.
    Le propriétaire peut être une personne physique ou une société. Le locataire aussi.
    J’ai crée deux interfaces IProprietaire et ILocataire et mes classes sont :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Personne implements IProprietaire, ILocataire{	
                 private boolean islocataire;
    	private boolean isProprietaire;} 
     
    Societe implements IProprietaire, ILocataire{
    	private boolean islocataire;
    	private boolean isProprietaire;}
    Je stocke tous ces contacts crées dans une ArrayList mais comment je peux savoir en demandant le prochain élément de la liste si c’est une Personne ou une Societe ??. En fait j’ai des problèmes de Cast. Je pourrais créer une classe unique avec des variables d’états isPersonne,isSociete mais ça me semble pas la bonne solutions.
    Vos suggestions sont les bienvenus
    Merci d’avance.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    tu peux utiliser le mot clé instanceof

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ILocataire locataire = listeLocataire.get(1);
    if (locataire instanceof Personne) {
    // Traiter le cas de la personne
    } else if (locataire instanceof Societe) {
    // Traiter le cas de la société
    }
    Voilà,
    A+

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci je m'etais embrouille dans mes classes avec les instances et tout.
    en fait voila la classe que j'utilise pour extraire le Proprietaire avec l'id donnee:
    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
    public IProprietaire getProprietaire(int id){
       Iterator it = liste.iterator();
       while (it.hasNext()){
         IProprietaire prop = (IProprietaire) it.next();
         if (prop.isProprietaire()) // Assurance pour savoir si c'est un proprietaire
         {
         if (prop.getId() == id)
         {
            if (prop instanceof Personne)
            {
              Personne pers = (Personne) prop;
              return pers;
            }
           if (prop instanceof Societe)
           {
             Societe soc = (Societe) prop;
             return soc;
           }
        }
     }
    }
    return null;
    }
    ca marche mais ca me semble un peu lourd. Je veux dire sinon niveau conception est-ce qu'il vaudrait mieux creer quatre classes LocatairePersonne, LocataireSociete, ProprietairePersonne, ProprietaireSociete?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 155
    Points : 199
    Points
    199
    Par défaut
    niveau conception, l'idéal est de ne mettre acun switch, elseif, pour determiner un triatement différencié.
    Si l'héritage permet de redéfinir des méthodes c'est justement pour éviter cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    interface I{
    void traintement();
    }
     
    class A implements I{
    void traitement(){
      print("A");
    }
    Apres, là où on peut t'aider, c'est la meileur manière d'implémenter ton opération dans le modèle objet. Pour cela, dit-nous ce que tu veux faire avec tes 4 interfaces, etc.

  5. #5
    Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    En fait mes soucis sont surtout au niveau de la conception et tu traitements.
    J'emploie beaucoup de Cast et je sais pas si c'est bien ou non?

    j'utilise presque pas de polymorphisme et meme les interfaces que j'ai cree je peux m'en separer puisque dans mes classes j'ai les booleans isProprietaire, isLocataire. c'est pour ca que je me demande si ca ne serait pas mieux de creer quatre classe :

    LocatairePersonne implements ILocataire{}
    LocataireSociete implements ILocataire{}
    ProprietairePersonne implements IProprietaire{}
    ProprietaireSociete implements IProprietaire{}

    ca deviendra un peu plus complique mais au moins ca sera plus clair.

    aussi ca m'evitera d'instancier des variables que j'utilise pas :
    ma classe actuelle est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class Societe implements IProprietaire, ILocataire
    {
    	private final int id;
    	//
    	private boolean islocataire;
    	private boolean isProprietaire;
    	private boolean isFournisseur;
    	//
    	private ArrayList<Local> listeProprietes = new ArrayList<Local>();
    	private ArrayList<Local> listeLoues = new ArrayList<Local>();
    }
    cad si Societe isProprietaire l'Arraylist ListeLoues( cad liste des locaux loues par une Societe ) n'est jamais utilises.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 155
    Points : 199
    Points
    199
    Par défaut
    re
    je dirais même:

    LocatairePersonne implements ILocataire, Personne{}
    LocataireSociete implements ILocataire, Societe{}
    ProprietairePersonne implements IProprietaire, Personne{}
    ProprietaireSociete implements IProprietaire, Societe{}

    et essaye de virer les booleen islocataire & isProprietaire. En principe, ca n'a pas d'utilité.
    Apres, il faudrait plus de détails sur où tu stoocke tout ca, pour faire quoi.

    courage

  7. #7
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Une toute petite question :

    A quoi te serve tes 4 interfaces (ILocataire, Personne, Societe et IProprietaire) alors que tu as 4 classes (LocatairePersonne, LocataireSociete, ProprietairePersonne et ProprietaireSociete) qui permettent d'identifier chacun et donc de définir les propriétés et comportements adéquat ?

    Me semble-t-il, à rien.

    ne serait-ce point :
    1 classe par exemple : Entite
    et 4 interfaces ou classes Locataire, Proprietaire, Societe et Personne ?

Discussions similaires

  1. Méthode Finalize et problème de conception
    Par phryos dans le forum Langage
    Réponses: 4
    Dernier message: 19/04/2006, 11h04
  2. [VB6][UserControl et OCX]Problème de conception
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 19/01/2006, 22h37
  3. Petit problème de conception sur access
    Par coooookinette dans le forum Modélisation
    Réponses: 3
    Dernier message: 18/12/2005, 18h24
  4. Gestion des départements problème de conception
    Par snoopy69 dans le forum Modélisation
    Réponses: 7
    Dernier message: 11/10/2005, 13h08
  5. Problème de conceptions de tables
    Par dtavan dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/05/2004, 23h13

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