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 :

[OCL] Définition de contraintes


Sujet :

Diagrammes de Classes

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Points : 101
    Points
    101
    Par défaut [OCL] Définition de contraintes
    Bonjour à tous,

    J'ai besoin de spécifier des contraintes dans mon diagramme de classe. Donc je me suis dis qu'OCL était le plus approprié. Mon problème, c'est que dans les cours que j'ai trouvé sur le net, la spécification de contraintes ne se fait que pour une même clase ou bien seulement qu'entre deux classes directement liées. Quant est-il pour des classes éloignés sur mon diagramme de classe?
    Pour être plus explicite, par exemple pour SQL lorsque je fais une requête je dis : SELECT T1.champsY, T2.champsX From T1,T2 where (condition)
    alors comment fait-on en OCL pour dire que tel attribut appartenant à tel classe doit vérifier la condition de tel autre attribut de tel autre classe?
    Merci d'avance pour vos réponses. J'espère que j'ai été assez claire.
    P.S: si un autre langage vous semble plus approprié pour spécifier les contraintes, je prends!

  2. #2
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Il est possible en OCL de 'naviguer' de classe en classe.
    Je ne me rappelle plus de la syntaxe exacte, mais si tu as des relations entre les classes, tu pourra spécifier une contrainte comme celle dont tu as besoin.

    S'il n'y a aucun lien entre tes deux classes... Ca risque d'être difficile à spécifier (et aussi à implémenter je pense)
    Hervé Delannoy, Ingénieur études&développement.

    Je n'accepte pas les demandes de mise en relation MSN/yahoo sans motif.
    ------------------------------------------------------------------------
    Si , ni , ne peuvent vous aider, mais nous oui, pensez à un pti et au !
    Merci de vous relire
    ____________________________________________________________________________________
    Recherche joueurs de "Magic" sur Lille et environs.
    Donner plutôt que jeter.

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Points : 101
    Points
    101
    Par défaut
    merci hed62 de me répondre.

    Il existe effectivement une relation entre les classes pour lesquelles je veux spécifier une contrainte. Seulement, cette relation n'est pas une relation directe.
    Si quelqu'un peut m'aider en me donnant la syntaxe en OCL dont parle hed62, ça serait vraiment gentil.
    Pour être plus claire, je vais raisonner en java, pour dire que tel attribut appartient à tel classe on utilise <nom objet>.<nom attribut>.
    Il y a pas quelques chose qui ressemble à ça en OCL pour spécifier des contraintes entre deux classes?
    Merci d'avance pour vos réponses.

  4. #4
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Tu peux utiliser les itérateurs (lourds mais puissants)

    collection->iterate(element : Type1;
    result : Type2 = <expression>
    | <expr-with-element-and-result)

    ou naviguer 'normalement' , un peu comme en java.

    En tous cas :

    http://www.omg.org/cgi-bin/doc?formal/2006-05-01
    Hervé Delannoy, Ingénieur études&développement.

    Je n'accepte pas les demandes de mise en relation MSN/yahoo sans motif.
    ------------------------------------------------------------------------
    Si , ni , ne peuvent vous aider, mais nous oui, pensez à un pti et au !
    Merci de vous relire
    ____________________________________________________________________________________
    Recherche joueurs de "Magic" sur Lille et environs.
    Donner plutôt que jeter.

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Points : 101
    Points
    101
    Par défaut
    RE,
    Merci hed62,
    à travers le lien que tu as mis, j'ai trouvé ceci concernant les itérateurs dont tu parles (c'est la même chose que tu m'as dis ):
    collection->iterate( elem : Type; acc : Type = <expression> |expression-with-elem-and-acc )


    ce qui équivaut en Java à :

    iterate(elem : T; acc : T2 = value)
    { acc = value;
    for(Enumeration e = collection.elements() ; e.hasMoreElements(); )
    { elem = e.nextElement();
    acc = <expression-with-elem-and-acc>
    }
    return acc;
    }


    mon problème c'est que
    1- je n'ai pas de collection sur laquelle je peux faire une itération
    2- une itération c'est quelque chose qui se répéte par définition, alors que moi je cherche simplement à spécifier une contrainte comme par exemple en maths x<=Y*z sachant que x et z sont deux attributs qui appartiennent à une classe et Y appartient à une autre classe

  6. #6
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Peux tu envoyer le diagramme de classes stp ? Et aussi dire ce que tu veux exprimer en OCL ? Ce sera plus clair pour moi.
    Hervé Delannoy, Ingénieur études&développement.

    Je n'accepte pas les demandes de mise en relation MSN/yahoo sans motif.
    ------------------------------------------------------------------------
    Si , ni , ne peuvent vous aider, mais nous oui, pensez à un pti et au !
    Merci de vous relire
    ____________________________________________________________________________________
    Recherche joueurs de "Magic" sur Lille et environs.
    Donner plutôt que jeter.

  7. #7
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Points : 101
    Points
    101
    Par défaut
    merci hed62 pour ta collaboration,

    j'ai laissé tombé OCL. j'ai converti mon diagramme de classe UML en fichier XML et j'ai pu ainsi spécifier des contraintes de transformations dont j'avais besoin.
    je considère donc mon problème comme résolu.
    bonne continuation à Developpez.com

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

Discussions similaires

  1. [OCL] Utilisation OCL (Langage de contrainte)
    Par geforce dans le forum UML
    Réponses: 1
    Dernier message: 19/03/2010, 23h38
  2. Eclipse, GMF, et contraintes OCL
    Par rere56 dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 28/02/2009, 21h00
  3. Expression d'une contrainte avec OCL
    Par Soutou dans le forum UML
    Réponses: 4
    Dernier message: 17/11/2006, 15h31
  4. Réponses: 29
    Dernier message: 17/06/2006, 13h04
  5. Les contraintes OCL
    Par bart64 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 19/12/2003, 18h47

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