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

Design Patterns Discussion :

Pattern composite : peut on faire les opérations suivantes [Débutant(e)]


Sujet :

Design Patterns

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 45
    Par défaut Pattern composite : peut on faire les opérations suivantes
    Bonjour

    Avant de passer bien du temps à adapter ce pattern qui peut être ne permet pas les opération suivantes , je vous pose la question:

    Fais plusieurs test mais y a toujours des petites choses pour chacun qui fonctionne pas
    Alors question d'ordre générale.

    Peut on avec ce pattern:

    1) RECHERCHE
    trouver un objet par son nom et le nous retourner l'objet de ce type ?
    2) échanger deux noeuds ?
    3) échanger deux branches?

    Merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 89
    Par défaut
    Bonjour,

    Le design pattern composite permet d'effectuer un même traitement par un objet unique ou par un ensemble d'objets, sans avoir à connaitre le nombre ou le type de ces objets à priori.

    A partir de là :
    1) Oui il suffit que la classe Component (la classe de base) déclare une méthode 'getObjectsWithName(name)'. Les sous classes devront nécessairement l'implémenter.
    2) et 3) La classe Composite est responsable de gérer la liste des objets, donc même si le design pattern n'est pas spécifiquement fait pour des échanges d'objet, c'est tout à fait possible de le faire.

    NB : Dans votre question, j'ai surtout l'impression que vous avez besoin d'une structure d'arbre.
    Si les possibilités offertes (indiquées plus haut) par le design pattern composite ne vous sont pas nécessaires, ce n'est peut être pas la structure la plus appropriée.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 45
    Par défaut
    Citation Envoyé par tristan_m Voir le message
    Bonjour,

    Le design pattern composite permet d'effectuer un même traitement par un objet unique ou par un ensemble d'objets, sans avoir à connaitre le nombre ou le type de ces objets à priori.

    A partir de là :
    1) Oui il suffit que la classe Component (la classe de base) déclare une méthode 'getObjectsWithName(name)'. Les sous classes devront nécessairement l'implémenter.
    2) et 3) La classe Composite est responsable de gérer la liste des objets, donc même si le design pattern n'est pas spécifiquement fait pour des échanges d'objet, c'est tout à fait possible de le faire.

    NB : Dans votre question, j'ai surtout l'impression que vous avez besoin d'une structure d'arbre.
    Si les possibilités offertes (indiquées plus haut) par le design pattern composite ne vous sont pas nécessaires, ce n'est peut être pas la structure la plus appropriée.
    Bonjour
    Merci pour les réponses
    1) getObjectsWithName(name) ? ! Bon il est vrai que je n'ai pas spécifié que c'était soit en c# ou en vb.net. Qu'est ce que cette méthode?

    Pour ta suggestion d'un arbre. c'est parce que cela doit être un arbre n-aire et non pas binaire. Et la raison pour laquelle j'avais un penchant pour le pattern composite est qu'il peut gérer du n-aire... Par contre je croyais qu'on pouvait faire avec ce pattern l'équivalent d'avec un arbre n-aire.. incluant toutes les opérations.. Est ce que je me trompe ?

    merci d'avance
    Bye

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 89
    Par défaut
    Bonjour,

    Je ne sais pas si c'est le mot 'méthode' qui induit en erreur?
    Je l'utilisais dans mon message dans le sens 'méthode de classe', c'est-à-dire une fonction définie au sein d'une classe.
    'getObjectsWithName' est juste un nom arbitraire que j'ai donné à titre d'exemple. C'est cette fonction que vous devrez implémenter dans vos différentes classes.

    Sinon oui, le design pattern composite permet de créer des arbres n-aires.
    Il vous permettra sûrement de résoudre votre problème.
    Ce que je voulais indiquer c'est que si le seul besoin que vous avez est une structure d'arbre (binaire ou n-aire), il y a probablement des solutions plus simple que d'implémenter le design pattern composite (qui n'est pas forcément très compliqué à mettre en œuvre non plus cela dit).
    Utiliser le design pattern composite permet en revanche de s'assurer une grande maintenabilité.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 45
    Par défaut
    Citation Envoyé par tristan_m Voir le message
    Bonjour,

    Je ne sais pas si c'est le mot 'méthode' qui induit en erreur?
    Je l'utilisais dans mon message dans le sens 'méthode de classe', c'est-à-dire une fonction définie au sein d'une classe.
    'getObjectsWithName' est juste un nom arbitraire que j'ai donné à titre d'exemple. C'est cette fonction que vous devrez implémenter dans vos différentes classes.

    Sinon oui, le design pattern composite permet de créer des arbres n-aires.
    Il vous permettra sûrement de résoudre votre problème.
    Ce que je voulais indiquer c'est que si le seul besoin que vous avez est une structure d'arbre (binaire ou n-aire), il y a probablement des solutions plus simple que d'implémenter le design pattern composite (qui n'est pas forcément très compliqué à mettre en œuvre non plus cela dit).
    Utiliser le design pattern composite permet en revanche de s'assurer une grande maintenabilité.
    Ben en fait , c'est dans le cadre d'un stage .

    Il y a une arborescence de question.
    Chaque question à plusieurs options de réponses : Exemple l'opérateur a choisi A, B ou C.
    Si une option de réponse est choisi alors la prochaine question sera la suivante et ainsi de suite.
    À la fin il n'y pas de feuille . Peu importe les dernières questions on revient à la question 1 pour recommencer de nouveau les mêmes questions à répondre mais pour un nouveau produit.

    Larborescence de question est sauvé dans une Bd relationnelle et quand j'appelle celle ci je la transforme en objet avec un objet arborescence de question qui contient une liste de question qui chacune contient une liste de questions qui selon la réponse conduit à une question suivante.
    Donc mes deux objets de cette arborescence serait : Arborescence de question et Question

    Par ailleurs il y a des périphériques qui recoivent la question, retourne la réponse de l'opérateur pour être traiter . Et ensuite l'arborescence de question va indiquer aux périphériques ( équipement industriel) la prochaine question à répondre .

    Je pourrais faire sans arbre, sans composite mais cela va y ressembler comme solution.
    Si j'y vais avec des arbres n-aitre ou un pattern composite, alors a priori le composite me semblait plus simple mais je me questionne comme échanger deux noeuds , comment y insérer un branche .. puisque j'ai jamais utilisé ce pattern .

    Merci d'avance
    Bye

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 45
    Par défaut
    Du coup à la base comment fait on pour visiter tous les noeuds à la recherche d'un noeud précis avec le design pattern composite ?

    J'arrive à faire afficher l'ensemble des noeuds mais lorsque je fais une recherche en faisant une interrogation sur le noeud , il ne trouve que le noeud dont le nom qui l'appelle est le père
    ex
    pere.TrouverNoeud(unNoeud); il ne trouve que si unNoeud en est son fils immédiat. Il ne forge pas plus ...
    Bon évidemment récursivité ...

Discussions similaires

  1. Peut-on faire un background-color sur la balise area dans les map?
    Par dev14 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 24/03/2013, 20h45
  2. Réponses: 2
    Dernier message: 07/12/2010, 15h39
  3. [AC-2003] Peut-on faire une mise à jour d'une BDD avec les données
    Par Xtine dans le forum Access
    Réponses: 10
    Dernier message: 29/03/2009, 18h26
  4. [VB6 + access] Faire l'opération lier les tables
    Par david71 dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 03/08/2007, 15h26
  5. [MySQL] Comment faire pour avoir un lien sur les pages suivantes/précédentes
    Par Meewix dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 21/10/2006, 09h32

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