2010-05-23 4 views
2

J'ai téléchargé un essai d'Altova UModel et je commence à utiliser UML. Pour commencer, je suis en train de modéliser une application de gestion des informations personnelles, qui comprend une gestion de signets Web. Un signet peut appartenir à plusieurs tags (ou pas) en même temps et un tag peut contenir plusieurs signets (ou aucun si tous les signets qu'il contient ont été supprimés). La relation doit être navigable dans les deux sens - un utilisateur doit être capable de voir tous les signets avec un tag particulier et tous les tags d'un signet.Quand utiliser memberEnd et navigableOwnedEnd dans un diagramme de classes UML?

Quelle est la relation UML correcte entre les classes Bookmark et Tag? Dans la mesure où je comprends maintenant UML, c'est une association (pas une agrégation). Mais pour une relation plusieurs-à-plusieurs navigable bidirectionnelle je peux spécifier les rôles finaux comme "memberEnd" ou "when navigableOwnedEnd", graphiquement la connexion est la même dans les deux cas (une flèche) (ce que je comprends signifie navigability) mais une propriété apparaît dans la boîte de classe dans le cas où seulement "memberEnd" est utilisé.

Comment devrais-je le spécifier dans le modèle Si je veux dire la relation plusieurs-à-plusieurs navigable là-bas?

Répondre

4

De UML Superstructure Spécification, section v2.1.2 7.3.3:

  • memberEnd: Propriété [2..*] Chaque fin représente la participation des instances du classificateur connecté à l'extrémité dans les liens de l'association. C'est une association ordonnée. Subsets Espace de noms :: membre.
  • ownedEnd: Propriété [*] Les extrémités qui appartiennent à l'association elle-même. C'est une association ordonnée. Subsets Association :: memberEnd, Classifier :: feature, et Namespace :: ownedMember.
  • navigableOwnedEnd: Propriété [*] Les extrémités navigables qui appartiennent à l'association elle-même. Association des sous-ensembles :: ownedEnd.

Donc, si la fin est 'possédé' par l'association, utilisez le type ownedEnd/navigableOwnedEnd, sinon utiliser le type de memberEnd.

L'une ou l'autre peut être utilisée pour une «relation plusieurs-à-plusieurs navigable»; si chaque lien de relation est une instance distincte dans votre conception, il peut posséder les extrémités (par exemple, la classe A et la classe B ont une référence à une liste de paires de références à As et Bs), mais si le lien de relation est implicite, ne possède rien (par exemple, la classe A a une liste de références à Bs apparentées, la classe B a une liste de références à As). Ayant utilisé UML depuis la fin des années 90, vous êtes la première personne que j'ai rencontrée qui se souciait de la différence!

Questions connexes