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

BOUML Discussion :

[Plugout] La classe UmBaseRelation et l'enum aRelationKind


Sujet :

BOUML

  1. #1
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut [Plugout] La classe UmBaseRelation et l'enum aRelationKind
    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à :
    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
    Ca veut dire quoi ?

    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    aUmlBaseRelation.relationKind() == aRelationKind.anAssociation
    Cela veut dire que
    - 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();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    aUmlBaseRelation.relationKind() == aRelationKind.aDirectionalAssociation
    Cela veut dire que :
    - 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

  2. #2
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    bonjour,

    Citation Envoyé par yann2
    ...
    J'ai bon ?
    oui

    les relations aRelationKind.aDirectional* ont un bout non navigable et sont representées par une fleche (+ éventuellement marque d'aggregation). Les autres ont les deux bouts navigables et sont donc représentées par un trait sans fleche (+ éventuellement marque d'aggregation). Le corrolaire de ce choix est que Je ne gère pas les aggregations 'aux deux bouts'

    Citation Envoyé par yann2
    Il n'a rien pour gérer les interactions (diagramme de séquence) ? ...
    Vu d'un plug-out un diagramme est une boite noire.

    Les interactions n'ont pas encore de représentation dans le modèle, elle sont donc purement graphique, et non accessible à partir d'un plug-out .

    C'était également le cas des instances de classe jusqu'à la très récente version 2.28
    Avec la 2.29 il y a des instances faisant parti du modèle (et donc visibles dans le browser) et des instances purement graphique ne faisant pas parti du modèle (et donc absente du browser). Je ne souhaitais pas avoir d'instances hors modèle, mais il y a eu une levée de bouclier de certains utilisateurs ralant devant la multiplication des instances dans le browser, je gère donc les deux, ce qui ne me simplifie pas la vie et qui ne rend probablement les choses pas très claires à l'utilisation
    Tout cela pour dire que permettre l'utilisation d'instances de classe faisant parti du modèle dans les diagrammes de séquence et de collaboration/communication est un premier pas nécessaire pour la modélisation des interactions ...

    bonnes modélisations et plug-outifications

  3. #3
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Bonjour

    Merci beaucoup pour ces informations.
    C'est dommage pour les instances. Peut être qu'un plug out filtrant les entités affichées dans le browser pourrait faire l'affaire. Mais je ne sais pas si c'est possible à faire.

    Yann

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

Discussions similaires

  1. Classe générique avec une Enum
    Par Galevsky dans le forum Langage
    Réponses: 5
    Dernier message: 12/09/2012, 11h15
  2. 2 classes : 1 ou 2 enum ?
    Par snipes dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 22/03/2009, 18h40
  3. [Plugout] 1.Classe UmlParameter, 2.les views
    Par yann2 dans le forum BOUML
    Réponses: 5
    Dernier message: 18/07/2007, 13h58
  4. declarer un enum dans une classe
    Par d-a-v-e dans le forum C++
    Réponses: 15
    Dernier message: 10/02/2006, 00h46
  5. Réponses: 17
    Dernier message: 16/10/2005, 21h01

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