2010-07-05 6 views
2

J'essaye de comprendre s'il est correct de mettre dans les champs de la classe particulière une référence à un objet/collection auquel cette classe est liée. Disons que j'ai une université de classe qui regroupe de nombreuses instances de la classe Étudiant. Quand je mets sur mon diagramme les deux classes, j'ajoute la relation d'agrégation entre eux.Diagramme de classes UML: pour ajouter des champs utilisés pour implémenter des relations ou non?

Et maintenant la question: Puis-je ajouter à l'université un domaine comme 'étudiants: étudiants []? Dois-je? Ou peut-être que je ne dois pas?

Merci à l'avance, Piotr

Répondre

0

attributs possèdent des propriétés d'association dans UML 2. Ce qui est nouveau et il est pas toujours facile de comprendre le concept. Je n'ai pas compris pourquoi nous avions besoin d'un attribut avant d'avoir vu la démo suivante. La règle d'or est que les attributs doivent être créés afin de sauvegarder les informations d'association dans le modèle. J'ai trouvé une séance d'enseignement intéressant sur l'association et l'agrégation dans UML 2.

Il est un flash 2m30s démo http://www.download-omondo.com/AggregationAndComposition.swf

La création d'association ci-dessus est pour le niveau d'experts, je veux dire modeleur qui veut conception propre et modèle propre ainsi que le métamodèle parfait. Si cela ne vous intéresse pas, il vous suffit de créer une association au niveau du modèle et cela ferait l'affaire, mais la génération du code ne sera pas effectuée. Cela signifie que les mappages pour la base de données devront être créés ultérieurement au niveau du code par les développeurs. Pour comprendre la différence entre les deux types d'associations, consultez cette autre démo flash: http://www.download-omondo.com/association.swf

0

Cela dépend de ce que vous faites avec votre modèle, mais en général, vous ne devriez pas avoir à utiliser un attribut pour cela, vous pouvez utiliser une association à la place. Les associations peuvent contenir plus d'informations que leurs attributs, composites ou partagés, dont les extrémités sont navigables, multiplicité à chaque extrémité, extrémités nommées, etc.

Un avantage des associations est qu'une association peut réellement représenter un propriété sur chaque classe à laquelle elle est connectée, tandis qu'un attribut ne représente qu'une propriété de la classe à laquelle elle appartient.

Ainsi, dans votre cas, l'université a des étudiants, vous tirerais une association de l'Université d'étudiants, nommant chaque point final et le réglage de la multiplicité correctement.

Maintenant, quand vous allez générer du code à partir de votre modèle, juste être sûr de prendre en compte les associations ainsi que des attributs. De cette façon, vous n'aurez pas besoin d'ajouter les propriétés en tant qu'attributs et associations, tout comme les associations. J'ai quelques diagrammes avec lesquels j'ai testé cette approche, en générant du code sql et php à partir de l'xmi via une transformation xsl, et ça marche plutôt bien ... si vous voulez plus de détails je peux le déterrer.

0

Il existe 3 types de relations: association, agrégation et composition. La composition est une spécialisation de l'agrégation, l'agrégation est une spécialisation de l'association.

En utilisant l'un ou l'autre dépend de la phase de votre analyse. Vous pouvez simplement utiliser l'association dans le premier brouillon et l'affiner ensuite pour l'agrégation ou la composition, la différence avec l'agrégation est qu'un étudiant n'a aucun sens dans un univers universitaire. S'il y a plusieurs instances universitaires, ce serait plutôt l'agrégation.

Si vous utilisez des relations, il n'y a pas besoin de et vous ne devriez pas ajouter des élèves [] parce qu'il est redondant.Et si vous faites cela, vous perdez la sémantique des 3 types de relations.

Questions connexes