Class 为什么我们需要在类图中使用关联(多重性)?

Class 为什么我们需要在类图中使用关联(多重性)?,class,uml,Class,Uml,在我的应用程序中,我一直在使用类图。基本上,我已经为业务逻辑绘制了类图。Hibernate用作数据访问层。在大多数类图示例中,我注意到在类图中考虑了associationmultiplicity 我不认为在digarms类中使用associationmultiplicity有什么特别的原因,因为我们不能在类中实现它。有人能解释为什么我们需要用一个例子来关联吗?二进制关联和属性在UML中或多或少是相同的。您可以选择使用关联、属性或两者的混合来建模 当属性的类型为数据类型时,我经常使用属性;当另一端

在我的应用程序中,我一直在使用类图。基本上,我已经为业务逻辑绘制了类图。Hibernate用作数据访问层。在大多数类图示例中,我注意到在类图中考虑了associationmultiplicity


我不认为在digarms类中使用associationmultiplicity有什么特别的原因,因为我们不能在类中实现它。有人能解释为什么我们需要用一个例子来关联吗?

二进制关联和属性在UML中或多或少是相同的。您可以选择使用关联、属性或两者的混合来建模

当属性的类型为数据类型时,我经常使用属性;当另一端的类型为常规类时,我经常使用关联。我已在我的网站上记录了这一最佳实践:


使用关联的优点是,它以更直观的方式显示关系,使关系通常比使用属性时更明显。

二进制关联和属性在UML中或多或少是相同的。您可以选择使用关联、属性或两者的混合来建模

当属性的类型为数据类型时,我经常使用属性;当另一端的类型为常规类时,我经常使用关联。我已在我的网站上记录了这一最佳实践:


使用关联的优点是,它以更直观的方式显示关系,使关系通常比使用属性时更为明显。

如果不向模型添加有价值的信息,则可以省略多重性。但是,有些情况与模板不同,您希望对显式多重性进行建模。通常,您会发现0..1表示可选关系,0..*表示任意数量的关系,1..*表示一个或多个关系。例如,对于一个在职人员来说,它可能有0..1个上司。一个人可能有0..*个孩子。一个人应该有1个朋友-


因此,正如您所看到的,它取决于您是否要使用多重性。如果多重性没有为模型添加有价值的信息,您可以随意省略它。但是,有些情况与模板不同,您希望对显式多重性进行建模。通常,您会发现0..1表示可选关系,0..*表示任意数量的关系,1..*表示一个或多个关系。例如,对于一个在职人员来说,它可能有0..1个上司。一个人可能有0..*个孩子。一个人应该有1个朋友-


因此,正如您所看到的,这取决于域是否要使用多重性。

是的,但我们没有实现associationmultiplicity。我可以假设使用多重性的唯一地方是在数据访问层,而不是在业务层。当然可以。关联通常使用属性实现。您可以在业务对象上实现额外的约束,例如多重性作为验证方法,也可以将其留给数据库,我不会说二进制关联和属性是一回事。关联本质上是将反向属性绑定到一个整洁的捆绑包中。@JimL。这就是我多多少少说的原因。虽然存在一些差异,但这些可能会让我们走得太远。这里的要点是指出你通常可以用一个或另一个来表示相同的概念。我同意,如果你的意思是一个属性可以是一个关联的一部分,也可以不是。属性和关联或多或少不是一回事。是的,但我们没有实现associationmultiplicity。我可以假设使用多重性的唯一地方是在数据访问层,而不是在业务层。当然可以。关联通常使用属性实现。您可以在业务对象上实现额外的约束,例如多重性作为验证方法,也可以将其留给数据库,我不会说二进制关联和属性是一回事。关联本质上是将反向属性绑定到一个整洁的捆绑包中。@JimL。这就是我多多少少说的原因。虽然存在一些差异,但这些可能会让我们走得太远。这里的要点是指出你通常可以用一个或另一个来表示相同的概念。我同意,如果你的意思是一个属性可以是一个关联的一部分,也可以不是。属性和关联或多或少不是一回事。为什么你不想看到你的类是如何可视化连接的?!请记住,UML中未指定的多重性意味着1..1。如果您像关系数据库一样对单向关系建模,那么您正在将问题域丢失给解决方案域。为什么您不想看到您的类是如何可视化地连接的?!请记住,UML中未指定的多重性意味着1..1。如果像关系数据库一样对单向关系进行建模,则问题域将丢失给解决方案域。