Association UML vs. composition et niveau de détail
En fait, en faire une couple d'amateurs UML questions! Lors de la création d'un diagramme UML pour modéliser un domaine de concepts et vous venez à travers un concept de domaine qui "détient" quelques informations sur un autre concept, est-il préférable de tenir un tampon de référence/de l'entité ou de détenir l'ensemble de l'entité dans le modèle lui-même? S'il vous plaît garder à l'esprit que ce qui est relatif à la création d'un simple haut niveau modèle - je suis sûr que dans la phase de mise en œuvre, les choses seraient un peu différentes.
Par exemple, lequel des deux modèles ci-dessous est correcte? La première a une composition relation avec FlightBooking la tenue de l'ensemble des Vols. Dans la seconde, FlightBooking a juste une référence à Vol d'.
Deuxièmement, lors de la création d'un haut niveau de diagramme UML domaine de la modélisation des concepts, de la façon dont beaucoup de détails, êtes-vous vraiment voulu aller? Par exemple, dans le diagramme ci-dessous, un vol peut contenir des détails sur l'origine/destination des chaînes de caractères, ou je pourrais modèle de classes séparées pour ces concepts et de créer une composition relation. Lequel des deux est le bon?
Aussi, juste une autre chose, lors de la modélisation de celles-ci, où un Vol "tient" un orig/destination comme une autre classe plutôt qu'une chaîne, laquelle des deux voies est la voie correcte de la modélisation de cette? Je suis assez confus quand montrer assosciation et quand afficher la composition.
source d'informationauteur Roger2233
Vous devez vous connecter pour publier un commentaire.
Association :
Cela signifie deux classes ont une certaine relation, pourrait être n'importe quoi vraiment.
E. g : B, A est lié à B d'une façon donnée.
Composition :
C'est aussi un type spécial d'association utilisée pour la modélisation de la "Propriété". Ceci est très similaire à l'Agrégation, à la seule différence qu'il dépeint Toute une partie de la relation et de la 'partie' de l'entité ne dispose pas de sa propre existence indépendante
E. g : l'Une se compose de B, B est une partie de A et donc ne peut pas exister sans A.
Bonne explication : Diagramme de Classe UML: Association, d'Agrégation et de Composition
Désolé si c'est un peu long...
Si vous essayez de modèle de domaine concepts alors je vous encourage à oublier à propos de la composition/agrégation et le bâton avec de simples associations. Pourquoi? Parce que décider sur la composition /agrégation est dans la manière de les questions importantes. Ils sont:
Relation de dénomination Vous accomplir (1) en nommant le rel se termine. Pas avec des noms de rôle (par exemple, "Vols" dans votre premier exemple), car qui vous dit rien au sujet de pourquoi la relation existe. Donc dans votre exemple 1: quelle est la relation? C'est une place réservée sur le vol? Confirmé? Payé pour? Impossible de dire à partir du schéma tel qu'il est. Il existe différentes approches pour les verbes à base de nom, voir par exemple ce post. Pourquoi faire cela? Parce qu'il vous invite à assurez-vous de comprendre le domaine. Un grand pourcentage (probablement la majorité, bien que je n'ai jamais prouvé) du domaine des règles existent dans les relations. Afin de comprendre pourquoi il existe des relations est essentielle à la compréhension du domaine.
Cardinalité Probablement plus évident que de noms. Vous devez déterminer à la fois les extrémités supérieure et inférieure. Important à l'extrémité inférieure est de savoir si cela est facultatif (c'est à dire 0 ou 1). À l'extrémité supérieure, 1 ou à plusieurs. Encore une fois cette surfaces règles importantes de ce domaine. Pour revenir à votre exemple encore: combien de vols dans une réservation de vol? Peut-on être de vol dans plusieurs réservations? (quoique ce soit "dans"...).
Créer /Supprimer des Comportements Qui crée des instances de la relation? Qui supprime? Si l'une des extrémités est supprimé, ce qui se passe à l'autre bout? Encore une fois, toutes les règles importantes du domaine du problème.
Ceux qui nous l'espérons répondre à votre deuxième question. Ne lésinez pas sur les relations. Prenez le temps de les comprendre. Ils sont le secret de la sauce à la compréhension d'un domaine. Répondant à toutes les questions ci-dessus vous donnera beaucoup plus de perspicacité que d'essayer de décider entre composition/agrégation/association.
Si vous vraiment veux montrer composition vs association toutefois, il est mécanique, si vous répondez aux questions ci-dessus:
Autrement un simple association. Comme pour l'agrégation: l'ignorer. Supprimer de votre vocabulaire. Les Causes de la confusion que ce qu'il vaut. Tout ce que vous pouvez dire avec l'agrégation, vous pouvez dire beaucoup plus clairement et précisément défini correctement simple association.
hth.
PS: d'un point de syntaxe: Composition utilise un rempli de diamants. Ce que vous avez montré, c'est l'Agrégation.
Compositions, les agrégations et les associations.
composition
shared
et mêmenone
tous les trois sont des agrégations.Donc, composition est un sous-ensemble de agrégation et agrégation est une fonction de l' association
Pour votre premier exemple, le premier diagramme, à la composition, est correcte. Votre deuxième option, en se référant à flightID comme un int, pourrait travail, mais il est incomplet: int en elle-même ne vous donne pas un moyen d'accéder au Vol de l'objet. La classe de Vol n'est pas comme par magie stocker une liste de vol d'objets que vous pouvez les récupérer en nombre, de sorte que la deuxième option aurait besoin d'une troisième classe d'un endroit pour stocker tout le Vol des objets.
Pour votre deuxième question, au niveau élevé, cela dépend vraiment de vos préférences personnelles (ou votre professeur personnel de préférence!!!). Essayez d'utiliser votre meilleur jugement.