Bonsoir
J'ai un petit problème avec la classe UmlBaseRelation et aRelationKind.
J'ai déjà déduit qu'une instance de UmlBaseRelation est une association si la méthode UmlBaseRelation::relationKind() retourne une des valeurs suivantes :
- aRelationKind.aDirectionalAggregation
- aRelationKind.aDirectionalAggregationByValue
- aRelationKind.aDirectionalAssociation
- aRelationKind.anAggregation
- aRelationKind.anAggregationByValue
- aRelationKind.anAssociation
J'ai bon ?
Là où c'est vraiment confus pour mois, ce sont ces histoires de directionnalité. Le problème est que je commence à être familier avec le métamodèle UML2 et il se trouve que l'implémentation des dépendances dans BOUML est différente.
Lorsqu'une relation à un type "association directionnelle".
J'entend par là :
Ca veut dire quoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 aUmlBaseRelation.relationKind() == aRelationKind.aDirectionalAggregation || aUmlBaseRelation.relationKind() == aRelationKind.aDirectionalAggregationByValue || aUmlBaseRelation.relationKind == aRelationKind.aDirectionalAssociation
Cela veut dire que la classe contenant l'association à une propriété nommée 'aUmlBaseRelation.roleName()' de type 'aUmlBaseRelation.roleType()' et que la propiété n'a pas d'inverse (opposite) ?
J'avoue que je ne comprend pas cette notion : 'Directionnal'.
Pour moi une association est une référençant des 'bouts' (end) qui peuvent être navigables ou non.
Après des tests j'en suis arrivé aux conclusions suivantes :
Cela veut dire que
Code : Sélectionner tout - Visualiser dans une fenêtre à part aUmlBaseRelation.relationKind() == aRelationKind.anAssociation
- la classe contenant la relation a une propriété nommée aUmlBaseRelation.roleName() de type aUmlBaseRelation.roleType()
- la classe aUmlBaseRelation.roleType() a une propriété nommée name de type aUmlBaseRelation.parent(). Avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 UmlBaseRelation otherRelation = aUmlBaseRelation.side(true); if (otherRelation == aUmlBaseRelation) { otherRelation = aUmlBaseRelation.side(false); } String name = otherRelation.roleName();Cela veut dire que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part aUmlBaseRelation.relationKind() == aRelationKind.aDirectionalAssociation
- la classe contenant la relation a une propriété nommée aUmlBaseRelation.roleName() de type aUmlBaseRelation.roleType()
et c'est tout !!!
Pour les autres associations, c'est juste le type d'aggregation qui change (none, aggregation ou composition).
J'ai bon ?
C'est d'autant plus déroutant que dans BOUML on a soit des 'association' soit des 'unidirectionnal association'![]()
Question subsidiaire :
Il n'a rien pour gérer les interactions (diagramme de séquence) ? Ou c'est moi qui ai de la m***e dans les yeux (ça ne serait pas la première fois). J'ai bien vue qu'il y avait la classe UmlBaseSequenceDiagram mais je n'ai rien trouvé d'autres. Je pense qu'il n'y a pas encore quelque chose de fait puisque rien n'est ajouté dans la vue browser lorsque l'on édite un diagramme de séquence.
Voili voilou
Merci![]()
Yann
Partager