Class UML类图:是否添加用于实现关系的字段?

Class UML类图:是否添加用于实现关系的字段?,class,uml,diagram,collections,field,Class,Uml,Diagram,Collections,Field,我试图弄清楚,在特定类的字段中放入对该类相关的对象/集合的引用是否正确 比如说,我有一个班级,聚集了许多学生班级的实例。当我将这两个类放在图表上时,我添加了它们之间的聚合关系 现在的问题是:我能在大学里加上一个像“学生:学生[]”这样的领域吗?我必须这样做吗?也许我不能 提前感谢,, Piotr这取决于您对模型所做的操作,但通常情况下,您不必为此使用属性,您可以使用关联。关联能够包含更多与属性相关的信息,例如它们是复合的还是共享的、哪些端点是可导航的、每个端点上的多重性、命名端点等 关联的一个好

我试图弄清楚,在特定类的字段中放入对该类相关的对象/集合的引用是否正确

比如说,我有一个班级,聚集了许多学生班级的实例。当我将这两个类放在图表上时,我添加了它们之间的聚合关系

现在的问题是:我能在大学里加上一个像“学生:学生[]”这样的领域吗?我必须这样做吗?也许我不能

提前感谢,,
Piotr

这取决于您对模型所做的操作,但通常情况下,您不必为此使用属性,您可以使用关联。关联能够包含更多与属性相关的信息,例如它们是复合的还是共享的、哪些端点是可导航的、每个端点上的多重性、命名端点等

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

所以,在你的例子中,大学有学生,所以你应该在大学和学生之间画一个关联,命名每个端点并正确设置多重性


现在,当您从模型生成代码时,请确保考虑关联和属性。这样,您就不需要添加属性作为属性和关联,就像添加关联一样。我用几个图表测试了这种方法,通过xsl转换从xmi生成sql和php代码,效果非常好。。。如果您想了解更多详细信息,我可以将其挖掘出来。

这取决于您对模型所做的操作,但一般来说,您不必为此使用属性,您可以使用关联。关联能够包含更多与属性相关的信息,例如它们是复合的还是共享的、哪些端点是可导航的、每个端点上的多重性、命名端点等

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

所以,在你的例子中,大学有学生,所以你应该在大学和学生之间画一个关联,命名每个端点并正确设置多重性


现在,当您从模型生成代码时,请确保考虑关联和属性。这样,您就不需要添加属性作为属性和关联,就像添加关联一样。我用几个图表测试了这种方法,通过xsl转换从xmi生成sql和php代码,效果非常好。。。如果你想要更多的细节,我可以把它挖出来。

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

这是一个2m30s的flash演示

上面的关联创建是针对专家级的,我指的是想要干净的设计和干净的模型以及完美的元模型的建模者。如果您不在乎,那么只需在模型级别创建一个关联,它就可以完成这项工作,但不会生成代码。这意味着开发人员以后需要在代码级别创建数据库映射。
要了解这两种关联之间的区别,请参见另一个flash演示:

属性在UML2中拥有关联属性。这是一个新概念,理解这个概念并不总是那么容易。我不明白为什么我们需要一个属性,直到我看到下面的演示。 黄金法则是,为了在模型中保存关联信息,应该创建属性。我在UML2中发现了一个关于关联和聚合的有趣的教学课程

这是一个2m30s的flash演示

上面的关联创建是针对专家级的,我指的是想要干净的设计和干净的模型以及完美的元模型的建模者。如果您不在乎,那么只需在模型级别创建一个关联,它就可以完成这项工作,但不会生成代码。这意味着开发人员以后需要在代码级别创建数据库映射。
要了解这两种关联之间的区别,请参见另一个flash演示:

有三种类型的关系:关联、聚合和组合。组合是聚合的特化,聚合是关联的特化

使用其中一种取决于分析的阶段。你可以在初稿中使用关联,然后再将其细化为聚合或合成,聚合的不同之处在于,学生在一个大学世界中没有任何意义。如果有几所大学的例子,那将是聚合而不是聚合


如果使用关系,则没有必要也不应该添加student[],因为它是多余的。如果你这样做,你就失去了3种关系的语义

有三种类型的关系:关联、聚合和组合。组合是聚合的特化,聚合是关联的特化

使用其中一种取决于分析的阶段。你可以在初稿中使用关联,然后再将其细化为聚合或合成,聚合的不同之处在于,学生在一个大学世界中没有任何意义。如果有几所大学的例子,那将是聚合而不是聚合

如果使用关系,则没有必要也不应该添加student[],因为它是多余的。如果你这样做,你就失去了语义