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

UML Discussion :

Associations qualifiées et implémentation


Sujet :

UML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 255
    Par défaut Associations qualifiées et implémentation
    Bonjour,

    j'aimerai que des gourous d'UML m'expliquent une chose assez obscure dans ma tête : les associations qualifiées...

    Je sais qu'une association peut être qualifiée en précisant un attribut qui servira de "filtre" pour déterminer lesquels des objets de la classe comportant l'attribut pourront participer à la relation.

    Voici mes questions :
    1. Peut-on qualifier la "cible" d'une association orientée (via un attribut de la cible) ?
    2. Peut-on qualifier chaque extrémité d'une association ?
    3. Comment utiliser les qualifications avec des classes-association ?
    4. Concrètement, ça donne quoi lors de l'implémentation tout ça ?


    Merci d'avance pour vos future réponses.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 255
    Par défaut
    En attendant vos réponses, je vais tenter d'y réponde moi-même (forcément maladroitement, vous m'en excuserez s'il vous plaît).

    1. Peut-on qualifier la "cible" d'une association orientée (via un attribut de la cible) ?
    Etant donné que la qualification d'une association permet de filtrer les objets qui vont y participer via un de leurs attributs, je dirais OUI : si j'ai un écureuil qui mange des noisettes, je peux qualifier les noisettes qu'il grignote dans son stock par l'attribut [estMûre=vrai] !?

    2. Peut-on qualifier chaque extrémité d'une association ?
    A priori OUI aussi ici : si on a une bande d'écureuils qui mangent des noisettes, on peut en plus du qualificatif précédant ajouté [estAffamé is vrai] du côté écureuil !?

    3. Comment utiliser les qualifications avec des classes-association ?
    Là j'avoue j'ai plus de mal...

    Admettons que l'on ait un groupe de marsupiaux femelles qui sont censé donneer naissance à des petits (car ça doit marcher avec les associations réflexives aussi) ; on pourrait avoir une classe d'association "donneNaissance" qui aurait pour qualificatif [estFécond is vrai, sexe is femelle] pour le rôle "genitrice" et pour qualificatif [dateNaissance is not vide]...

    Donc la réponse serait OUI !?

    4. Concrètement, ça donne quoi lors de l'implémentation tout ça ? ?
    Là je ne vois pas vraiment comment transposer cette notion...

  3. #3
    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 : 40
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    Je ne connais pas les associations qualifiées, personnellement j'emploie OCL pour ce genre de choses :


    En partant du schéma :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A-myA-----------------myB--B
    Peut-on qualifier la "cible" d'une association orientée (via un attribut de la cible) ?
    context A :
    inv : self.myB.UnAttributDeB = 2 -- pour spécifier que tous les B de A doivent avoir UnAttributDeB = 2

    Peut-on qualifier chaque extrémité d'une association ?
    Sans problème, avec le même genre de contrainte, il suffit de changer de context.

    Comment utiliser les qualifications avec des classes-association ?
    Schéma :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    A--theA-----------------------theB--B
                        |
                        C
    Depuis la classe d'asso :
    context C :
    inv : self.theA.AttributDeA = self.theB.AttributDeB

    Vers la classe d'association :
    context A :
    inv C[theA]->notEmpty() -- verifie que C est lié à A.

    Concrètement, ça donne quoi lors de l'implémentation tout ça ?
    Les invariants donnent souvent des assertions, ensuite les pre/post conditions se traduisent par des if/throw Exception.

    Ce ne sont bien sur que des exemples très légers.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 255
    Par défaut
    Merci

    Je considère que c'est une réponse satisfaisante.

    Si d'autres veulent ajouter leur grain de sel, pourquoi pas, si ça peut servir à d'autre

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

Discussions similaires

  1. association qualifiée UML à traduire en code
    Par philbon dans le forum UML
    Réponses: 0
    Dernier message: 07/12/2012, 15h37
  2. exemple de création d'Association qualifiée
    Par topographe dans le forum Développement
    Réponses: 1
    Dernier message: 05/10/2011, 20h59
  3. Associations qualifiées dans ArgoUML
    Par hibou107 dans le forum Outils
    Réponses: 0
    Dernier message: 14/09/2010, 11h29
  4. Réponses: 3
    Dernier message: 31/03/2010, 10h57
  5. Outils gratuits et associations qualifiées
    Par SpaceToto dans le forum Outils
    Réponses: 5
    Dernier message: 21/11/2008, 14h36

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