2010-07-05 64 views
2

我想弄清楚是否把这个类的对象/集合的引用放在特定类的字段中是正确的。UML类图:添加用于实现关系的字段吗?

比方说,我有一个大学聚集许多学生类的实例。当我把两个类放在我的图上时,我在它们之间添加了聚合的关系。

现在问题:我可以在大学添加像'students:Student []'这样的字段吗?我一定要吗?或者,也许我不能?

由于提前, 彼得

回答

0

在UML 2中使用它自己的关联属性。这是新的,它并不总是容易理解这个概念。我不明白为什么我们需要一个属性,直到我看到下面的演示。 黄金法则是应该创建属性以保存模型中的关联信息。我发现对关联和聚合了一个有趣的教学会议在UML 2

这是一个2分30秒flash演示 http://www.download-omondo.com/AggregationAndComposition.swf

上述协会的创建是专家级的,我的意思是建模谁愿意简洁的设计和清洁模式以及完美的元模型。如果你不在乎,那么只需在模型级创建一个关联,它可以完成这项工作,但代码生成将不会完成。这意味着开发人员需要在代码级别创建数据库映射。 要了解两种关联之间的区别,请参阅以下其他Flash演示:http://www.download-omondo.com/association.swf

0

这取决于你与你的模型做什么,但一般来说,你不应该使用这个属性,你可以使用关联来代替。关联可以包含更多属性信息,例如它们是复合还是共享,哪些结尾是可导航的,每端有多重性,有终点名称等。

关联的一个好处是一个关联实际上可以表示一个关联属性与它所连接的每个类相关联,而属性仅表示它所属类的属性。

因此,就你而言,大学有学生,所以你应该画一个从大学到学生的协会,命名每个端点并正确设置多样性。

现在,当您从模型中生成代码时,请务必考虑关联以及属性。这样,您不需要将属性作为属性和关联添加,就像关联一样。我有几个图我已经测试了这种方法,通过xsl转换从xmi生成sql和php代码,并且它工作得很好......如果您想了解更多详细信息,我可以将其挖掘出来。

0

有三种关系:关联,聚合和合成。构图是一种聚合的专业化,聚合是一种关联的专业化。

使用一个或另一个取决于您的分析阶段。您可以在第一稿中使用关联,然后再将其改进为聚合或合成,与聚合的区别在于,学生在一个大学宇宙中没有意义。如果有几所大学的实例,那就是聚合。

如果您使用关系,则不需要添加学生,因为它是多余的。如果你这样做,你就失去了三种关系的语义。