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

Diagrammes de Classes Discussion :

composition et liste


Sujet :

Diagrammes de Classes

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2006
    Messages : 77
    Par défaut composition et liste
    bonjour

    voila j'ai fait un diagramme de classe très simple qui est fait de compositions. Du genre immeuble contient des appartements qui contient des pièces.

    j'ai mes trois classes et la je veux les transcrires en code. pour ce faire je vais utiliser des listes.

    Le problème c'est que je ne vais utiliser qu'un seul élément sur chaque liste et que je ne souhaite pas conserver plus d'informations car je descend plus bas dans ma hiérarchie de classes et que cela va devenir impossible après.

    Je recherche la meilleur solution a mettre en oeuvre pour conserver que l'objet nécessaire :
    1/ créer une classe Médiateur ( pattern design) qui regroupe l'immeuble en question, juste l'appartement, et juste la pièce sur laquelle je travaille sans déclarer les listes ds chaque classe.

    2/ pour chaque classe créer un attribut elemSelectionné ce qui permet de vider ma liste d'elem.

    3/ passer en constructeur de appartement l'immeuble, en constructeur de la pièce l'appartement, et je vide les liste derrière après l'initialisation de l'objet enfant.

    Mercid de vos réponse j'espère avoir été clair... je pense que c'est un problème très classique.

  2. #2
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 551
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 551
    Par défaut
    Bonjour,

    j'avoue que j'ai du mal a te comprendre, déjà si tu donnais ton diagramme de classes se serait plus simple.

    j'ai mes trois classes et la je veux les transcrires en code. pour ce faire je vais utiliser des listes.
    tu veux dire que les classes deviennent des listes ? Quel langage veux-tu utiliser ?
    sinon, si tu as modelise tes classes tu as quasiment le code correspondant, non ?
    tu fais tout a la main ou tu utilises un modeleur (avec génération de code) ?

    je ne vais utiliser qu'un seul élément sur chaque liste et que je ne souhaite pas conserver plus d'informations
    conserver ou ?

    je vide les liste derrière après l'initialisation de l'objet enfant
    mais si tes listes sont vides ou ne contiennent qu'un element, pourquoi utiliser des listes ?

    j'espère avoir été clair
    ben non ...
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2006
    Messages : 77
    Par défaut dsl je me suis surement mal exprimé
    Voila on va procédé par l'exemple

    4 classes : immeuble, appartement, pièce, travaux

    1 immeuble contient une liste d'appartements et d'autres attributs (nom, @,...).

    1 appartement contient une liste de pièces et d'autres attributs (étage,...)

    1 pièce contient une liste de travaux possibles et d'autres attributs.



    Lorsque je vais implémenter tout cela j'aurais des listes avec plusieurs élements, et je souhaite créer un nouvel objet (celui sélectionné dans la liste), tout en gardant une référence vers celui qui lance l'implémentation. Mais je ne veux pas conserver les autres éléments de la liste qui me sont inutiles.

    Dans l'exemple : l'utilisateur aura pour choix une liste d'immeubles dans laquelle il en sélectionnera un pour ensuite voir les appartements qui le compose et ainsi de suite.

    Ma question est de savoir comment optimiser la gestion des listes entres les objets sachant que j'aurais toujours besoins des informations de l'immeuble même si je suis au niveau des travaux dans une pièce.

    Donc le mieux c'est de faire quoi :
    1/ d'utiliser le design pattern mediateur ( classe de liaisons )
    2/ de passer un lien au constructeur ... Cad appartement recoit l'objet immeuble en parametre pour avoir les infos et ainsi de suite. Ce qui fait que pour obtenir l'id de l'immeuble il faille toujours remonter toute l'arborescence.

    voila je n'utilise pas de générateur de code pour le projet,dsl

    Merci de vos réponses

  4. #4
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 551
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 551
    Par défaut
    A priori il te sera toujours utile de pouvoir obtenir les appartements que contient un immeuble, les pieces que contient un appartement, etc ..., genre :



    A ce propos le choix de la liste pour lier Immeuble, Apparement et Piece n'est pas un bon choix : à priori ces informations sont figées, or l'utilisation d'une liste est à privilégier lorsque la liste (!) des informations est changeante, dans le cas contraire un vecteur est un meilleur choix car cela prend moins de place mémoire et les parcours sont moins chers.

    Ce qui fait que pour obtenir l'id de l'immeuble il faille toujours remonter toute l'arborescence.
    C'est l'eternel question privilégier le temps d'exécution ou la place mémoire.
    Ceci dans ton cas l'arbre n'est vraiment pas profond, il ne parait donc pas necessaire de faire un lien de Appartement directement vers l'Immeuble qui le contient, etc ... Le contructeur de Appartement recoit en effet son Immeuble, etc ... le diagramme de classes devient donc :


    Note : telle que je la définie la classe Travaux est associée a une seule Piece, mais c'est peut etre un peu simpliste, a toi de voir !

    j'aurais des listes avec plusieurs élements, et je souhaite créer un nouvel objet (celui sélectionné dans la liste), tout en gardant une référence vers celui qui lance l'implémentation. Mais je ne veux pas conserver les autres éléments de la liste qui me sont inutiles.
    là je ne comprends plus,
    • d'où viennent tes infos, sont-elles en mémoire ou charges-tu le minimum a partir d'une BD ou autre ?
    • as-tu besoin de la liste des appartements d'un immeuble etc ... en mémoire ou veux-tu seulement des travaux pour UN appartement pour SON immeuble ?
    • en plus tout cela sent la recopie et je ne comprends pas pourquoi

    bref je ne vois pas où se situe le probleme des listes dans tout cela
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2006
    Messages : 77
    Par défaut
    Déjà merci de toutes tes réponses. Mon programme va être développé en C# compact Fw 2.0, je pense que les vecteurs sont plus présents en Java et qu'une arraylist sera donc suffisante dans mon cas.

    Dans mon projet, des travaux sont toujours appliqués à des équipements qui font partis d'emplacements. Cependant, je dois avoir la possibilité d'effectuer des travaux communs a plusieurs équipements dans plusieurs emplacements. Par exemple, repeindre le plafond dans une maison sous entend repeindre (=travaux) des plafonds (=equipements) dans plusieurs pieces (=emplacements).
    Je pense conserver l'arborescence :
    emplt
    l--- liste eqpts
    l---liste travaux

    Meme si mon application n'a pas une arborescence "profonde" je pense tout de meme utiliser un interface mediateur. Por indication mes données proviennent d'une BDD sql server mobile 2005

    Ma question porte surtout sur la gestion des ressources et sur la conservation des listes. Une fois que mon utilisateur aura choisit un immeuble il n'y aura aucune raison de conserver les autres... Que faire de cette liste ?

    Par ailleurs, est ce le meme probleme avec les emplacements d'un appartement qui contiennent des equipements auxquels on affecte des travaux ? Je m'explique .... Autant pour les immeubles l'utilisateurs ne va pas en changer avant longtemps... Autant pour un equipement celui ci evoluera plus rapidement et donc le mieux est de conserver l'objet en mémoire ou d'aller le rechercher en bdd ?
    J'insinue a bien plus rapidement le fait que l'on puisse modifier tous ces equipements d'un seul coup...

    Dans tout les cas merci des réponses et la patience dont tu as deja fait part.

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 21/08/2011, 16h09
  2. Réponses: 1
    Dernier message: 15/03/2010, 21h44
  3. Réponses: 3
    Dernier message: 19/05/2008, 16h18
  4. tri de liste chainée
    Par RezzA dans le forum C
    Réponses: 7
    Dernier message: 26/01/2003, 20h25
  5. Listes déroulantes liées entre elles
    Par denisC dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 27/07/2002, 15h53

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