Association UML multiplicité
J'ai une question sur les associations, pour être exact, je me pose des questions sur les multiplicités, je comprends, mais par exemple si je l'aurais:
--------- ---------
| |1 * | |
|CLASS |----------| STUDENT |
| | | |
--------- ---------
dose cela signifie qu'à TOUT moment au cours de système d'existence, il doit y avoir au moins 1 étudiant affectés à la classe, ou ceux des multiplicités doit être vrai, si le système fonctionne normalement.
Je me suis poser cette question, parce que je me demandais à propos de l'instant de la création d'un objet. Nous avons d'abord créer une classe vide, puis le remplir avec les élèves. Depuis quelque temps, la classe est vide, mais seulement lors de la création et de l'alimentation, alors il a au moins un élève. Parce que si j'allais changer de 1 à 0..1 il suggère qu'il peut être vide de la classe, il n'est pas faux (ce moment de remplissage), mais plus tard, je ne veux pas de permis des classes avec des élèves.
EDIT: changé 0..* 0..1, il doit être comme il est maintenant, désolé pour la confusion.
OriginalL'auteur Andna | 2012-03-10
Vous devez vous connecter pour publier un commentaire.
C'est une bonne question. Cela signifie que, lorsque le système est dans un état stable, chaque Étudiant DOIT être associé à une seule Classe. Qui à son tour soulève une autre question: ce qui constitue un "état stable'? UML en général ne pas formaliser cela. Intuitivement, cela veut dire que lorsqu'il n'y a aucune activité en cours qui est activement à l'évolution de l'état. Certains profils de UML mettre plus de rigueur autour de ce. Par exemple, Executable UML dit que le système peut violer les contraintes de cardinalité, tandis que l'action de l'état est en cours d'exécution. Toutefois, lorsque l'action de l'état se termine, il doit laisser le système dans l'état valide, c'est à dire où toutes les contraintes de cardinalité sont satisfaits.
Bases de données fournissent une bonne analogie ici. DB contraintes (comme not null & clés étrangères) doit en être de même lorsque le système est stable. Au cours de l'exécution d'une opération, les contraintes peuvent être temporairement violé. Toutefois, lorsque la transaction est terminée, il doit quitter la db dans un état valide.
Donc, pour votre exemple:
*
dit 0 ou plus - pour la Classe n'ont pas besoin de tous les Étudiants)hth.
Vous êtes les bienvenus - bonne question.
OriginalL'auteur
Cela signifie qu'il ya exactement une classe attribuée à plusieurs élèves.
Chaque extrémité de l'association est dotée d'un upper multiplicité des limites et d'une baisse de la multiplicité des limites, mais la plupart des éditeurs UML ne afficher une valeur si les limites supérieures et inférieures sont les mêmes. Si vous souhaitez autoriser (zéro ou un) pour beaucoup, vous pouvez l'écrire comme ceci:
Vraiment ce que vous voulez probablement ici est un plusieurs-à-plusieurs relations... les élèves peuvent être dans de nombreuses classes, et les classes peuvent contenir de nombreux étudiants.
OriginalL'auteur
Pas,le * signifie pas qu'il y ait au moins un Élève dans chaque Classe à tout moment. Mais l'autre direction, à la recherche de l'Étudiant à la Classe, la multiplicité signifie qu'un élève est en exactement une Classe.
Pour la modélisation des raisons que vous pourriez vouloir changer le 1 multiplicité également à *, mais cela dépend de votre contexte.
Et à propos de * - je pense qu'il signifie la même chose que 0..*, à moins que ce qu'il dit dans "UML distillée"
il dépend de la façon dont votre UML editor interprète vos commentaires... vous devriez être en mesure d'inspecter le diagramme et de voir que les véritables limites supérieures et inférieures pour chaque point de terminaison.
Je suis à l'aide de visual paradigm, et aussi loin que mon peu de compétences dans ce logiciel va, si j'ai select * comme multiplicité je vois seulement " ", mais je pense que cette discussion sur le sens de l' * n'est pas pertinent à ce sujet, j'ai corrigé mon post original, parce qu'il y a une erreur concernant des multiplicités (0..'* " au lieu de 0..1), si vous pouviez prendre un coup d'oeil maintenant, je vous serais reconnaissant 🙂
OriginalL'auteur