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 :

Contrainte de compatibilité entre 2 objets


Sujet :

Design Patterns

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 75
    Points : 35
    Points
    35
    Par défaut Contrainte de compatibilité entre 2 objets
    Bonjour,

    Je cherche un pattern pour écrire de manière générique des contraintes sur des couples d'objets.

    Je souhaiterais ainsi pouvoir définir une incompatibilité entre 2 instances d'objets (par comparaison entre valeurs de leurs attributs).

    Par exemple, si la hauteur d'un ventilateur est supérieur à celle du boîtier de l'ordinateur, les 2 composants ne pourront pas être retenus pour la configuration.

    Je vous remercie.

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Points : 654
    Points
    654
    Par défaut
    Bonjour,
    tu peut faire des surcharge d’opérateur.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 75
    Points : 35
    Points
    35
    Par défaut
    Tu pourrais me donner davantage de détails stp ? Un exemple si possible ? Merci

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Points : 654
    Points
    654
    Par défaut
    tu utilise quoi comme langage?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 75
    Points : 35
    Points
    35
    Par défaut
    Du PHP mais je connais également le Java

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Points : 654
    Points
    654
    Par défaut
    ok bon ba pas de surcharge d'operateur alors :/

    C'est du c++.

    Bon bas tu fait une super conception de tes classe + héritage.
    Ensuite on va dire que toute les spécificités communes des objets sont dans la classe mère et que tu as dans cette classe une méthode compare en public qui va comparer les valeurs communes ensuite te retourner un boolean.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 75
    Points : 35
    Points
    35
    Par défaut
    Tu peux me donner un exemple de code pour me permettre d'y voir plus clair. J'ai bien peur que ta solution ne soit pas très générique et ne me permette pas de créer de nouvelles règles de compatibilité à la volée.

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Points : 654
    Points
    654
    Par défaut
    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
    24
    25
    26
    
    class composant
    {
     private var hauteur;
    
    public function getHauteur(){
       return hauteur;
    }
    
    public function compare($obj){
       if (hauteur == $obj.getHauteur())
          return true;
        return false;
      }
    }
    
    class ventilateur extends composant{
        
    }
    
    class boitier extends composant{
        
    }
    
    boitier.compare(ventilateur);
    C'est l'un des principes de bases de l'objet les héritages le get c'est pour l'encapsulation

  9. #9
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 75
    Points : 35
    Points
    35
    Par défaut
    Je veux pouvoir ajouter n'importe quel type de contrainte entre deux instances de ces classes n'importe quand. Du coup la méthode que tu proposes ne convient pas puisque les contraintes seront codées en dur dans ce cas. Je cherche une solution me permettant de découpler tout ça.

  10. #10
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 75
    Points : 35
    Points
    35
    Par défaut
    Peut-être est-il envisageable d'utiliser le pattern visiteur mais comment prendre en considération des contraintes binaires (entre 2 classes) ?

  11. #11
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Points : 654
    Points
    654
    Par défaut
    fait un tableau associatif type array['key'].
    et tu fait une methode compare qui prend la clé et ton autre instance en param

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class toto
    {
    $myArray;
    compare($key, $obj)
    {
     if ( $myArray[$key] == obj.getMyArray()[$key])
        return true;
      return false;
    }
    }

  12. #12
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 75
    Points : 35
    Points
    35
    Par défaut
    N'existe-t-il pas de design patterns à appliquer dans ce cas de figure ?

  13. #13
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Points : 654
    Points
    654
    Par défaut
    bah je n'en ai pas vu de ce type la encore.
    Mais c'est possible après un design pattern reste juste une approche d'un problème générique et tu te doit de le coder a ta manière sa t'offre un approche de conception mais pas la solutions complète après il faut l'adapter.
    Moi j'aurais fait comme je te l'ai dit dans mon dernier post sa reste simple et ce n'est pas statique après c'est comme tu le désire mais pour ce type de chose il n'y a pas de solution miracle

  14. #14
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Points : 1 658
    Points
    1 658
    Par défaut
    Par exemple, si la hauteur d'un ventilateur est supérieur à celle du boîtier de l'ordinateur,
    Je veux pouvoir ajouter n'importe quel type de contrainte entre deux instances
    Un seul exemple et une description très générale ne suffisent pas à décrire précisément le problème.


    Cela consiste en quoi une contrainte entre deux objets?
    que l’un ne soit pas compris dans l’autre ? qu’un argument de l’un contienne l’autre objet ? que l’argument de l’un soit différent de la somme des arguments de l’autre ? qu’un arg de l’instance 1 et un arg de l’instance 2 ne soient pas tous les deux du même type ? qu’ils ne soient pas de types différents ? qu’ils ne soient pas tous les deux dans une liste de valeurs, de types ou d’objets précis ? qu’une instance n’ait pas une méthode inutilisable sur l’autre instance ? que le nombre de méthodes d’une instance ne dépasse pas le nombre de méthodes de l’autre instance, ou de l’un de ses arguments ? etc etc etc etc etc



    Manifestement il faudrait une liste des sortes de contraintes envisageables portant sur deux instances, de façon à les coder dans une classe qui produira à la demande une fonction qui comparera sur la base d’un critère donné en fonction des arguments passés pour sélectionner le type de comparaison voulue.
    Ouf.





    pour ce type de chose il n'y a pas de solution miracle
    Ben oui. Et c’est bien l’impression que donne la question: à la recherche d’un design pattern tout prêt. Si un tel pattern existe pour répondre à une formulation aussi vague, je serai fort curieux de le voir.

  15. #15
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Points : 654
    Points
    654
    Par défaut
    tu essaye de faire quoi concrètement ??
    Parce que si c'est des comparaisons de donnée SQL ça ne serait pas plus simple de le faire en requête plutôt que de tous charger en mémoire pour comparait ensuite via php en plus cela ne doit pas être super optimisé.

    Et après si t'es requête sont propre tu va aller plus vite en développement en charge sur ton serveur.

    Le SQL est fait pour ça

  16. #16
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 75
    Points : 35
    Points
    35
    Par défaut
    Mon problème est exactement celui évoqué dans la discussion "Pattern pour des contraintes entre Objet".

    Mais la conversation s'est interrompue ...

    Quelqu'un a-t-il un avis récent sur la question ?

  17. #17
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Points : 654
    Points
    654
    Par défaut
    bah dans "Pattern pour des contraintes entre Objet"

    Ils parlent d'objet orienté aspect

    Le principe est du type une méthode qui prend des variables et les compare pour toi du style +, =, -.

    Et d'autre subtilité
    http://fr.wikipedia.org/wiki/Program...%C3%A9e_aspect

Discussions similaires

  1. [ZF 1.11] Compatibilité entre modèle objet Zf et les jointures
    Par iowa dans le forum Zend_Db
    Réponses: 7
    Dernier message: 04/11/2011, 23h15
  2. Problèmes de compatibilité entre sdk 9.0c et geforce 2/4
    Par Francky033 dans le forum DirectX
    Réponses: 2
    Dernier message: 01/10/2004, 14h22
  3. Réponses: 4
    Dernier message: 25/09/2004, 09h58
  4. compatibilité entre sql server 7 et analysis service sql2000
    Par jeremie dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/03/2004, 15h08
  5. compatibilite entre omondo et cvs
    Par ed_hunter dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 03/11/2003, 16h06

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