Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 两个构图可以拥有同一个对象吗?_Oop_Uml_Composition_Object Oriented Analysis - Fatal编程技术网

Oop 两个构图可以拥有同一个对象吗?

Oop 两个构图可以拥有同一个对象吗?,oop,uml,composition,object-oriented-analysis,Oop,Uml,Composition,Object Oriented Analysis,我试图为在线拍卖系统制作一个类图,但我遇到了这个问题。出价属于拍卖,如果我错了,买家会纠正我。所以我可以说用户是由出价组成的,拍卖是由出价组成的,还是这违反了UML的规则?我很困惑您学习过UML中的关联类吗?它们表示从其他两个类之间的关系创建的对象,这正是您试图映射的对象。有大量详细说明关联类的内容,例如 这样你就不会在阅读正确的图表时感到困惑了。顺便说一句,你会很清楚存在实体出价,它只与买家和拍卖相关。你学习过UML中的关联类吗?它们表示从其他两个类之间的关系创建的对象,这正是您试图映射的对象

我试图为在线拍卖系统制作一个类图,但我遇到了这个问题。出价属于拍卖,如果我错了,买家会纠正我。所以我可以说用户是由出价组成的,拍卖是由出价组成的,还是这违反了UML的规则?我很困惑

您学习过UML中的关联类吗?它们表示从其他两个类之间的关系创建的对象,这正是您试图映射的对象。有大量详细说明关联类的内容,例如


这样你就不会在阅读正确的图表时感到困惑了。顺便说一句,你会很清楚存在实体出价,它只与买家和拍卖相关。

你学习过UML中的关联类吗?它们表示从其他两个类之间的关系创建的对象,这正是您试图映射的对象。有大量详细说明关联类的内容,例如

这样,您就不会在阅读正确的图表时感到困惑了。顺便说一句,您很清楚存在实体出价,该出价仅与买家和拍卖相关。

通常 术语组合不明确,这解释了您的困惑:

在OOP中,表示在另一个对象中使用对象。 在UML中,是一种特殊的关联,表示一个部分-整体关系,由整体独占部分所有权。 因此,在UML意义上,不可能有一个对象是两个不同组合的一部分,因为所有权不再是独占的。但是您可以在多个方面使用该对象,这是允许共享所有权的整体-部分关系

在面向对象的意义上,在组合中使用相同的对象或使用多个组合是没有问题的。对象组合对应于UML

在你的实际情况中 情况很简单:一个出价有一个买家,一个买家可能有几个出价,而一次拍卖有几个出价。您可以使用简单的关联对此进行建模:

您也可以在这里使用聚合,因为有人可能会认为拍卖和相应的出价之间存在整体-部分关系,我不会这样看:

但是,您不应该在另一边看到聚合,因为买家和出价之间没有真正的整体-部分关系:买家不是由多个出价组成的

补充说明 您也可以在这里使用关联类。但这不是必需的。语义也会有所不同:这意味着买家和拍卖之间存在出价关联:

从技术上讲,你还有三门课。 但重点是不同的:出价是买家和拍卖的附属品,不能单独存在,例如如果买家消失 一般来说 术语组合不明确,这解释了您的困惑:

在OOP中,表示在另一个对象中使用对象。 在UML中,是一种特殊的关联,表示一个部分-整体关系,由整体独占部分所有权。 因此,在UML意义上,不可能有一个对象是两个不同组合的一部分,因为所有权不再是独占的。但是您可以在多个方面使用该对象,这是允许共享所有权的整体-部分关系

在面向对象的意义上,在组合中使用相同的对象或使用多个组合是没有问题的。对象组合对应于UML

在你的实际情况中 情况很简单:一个出价有一个买家,一个买家可能有几个出价,而一次拍卖有几个出价。您可以使用简单的关联对此进行建模:

您也可以在这里使用聚合,因为有人可能会认为拍卖和相应的出价之间存在整体-部分关系,我不会这样看:

但是,您不应该在另一边看到聚合,因为买家和出价之间没有真正的整体-部分关系:买家不是由多个出价组成的

补充说明 您也可以在这里使用关联类。但这不是必需的。语义也会有所不同:这意味着买家和拍卖之间存在出价关联:

从技术上讲,你还有三门课。 但重点是不同的:出价是买家和拍卖的附属品,不能单独存在,例如如果买家消失
我不认为在拍卖中每个买家最多出价一次的说法对于协会类是正确的。如果我在买家和拍卖之间有一个[]-[]的关联,那么这不允许在一个动作中每个买家有多个出价吗?@GeertBellekens,有一个合适的类,你可以。但是对于关联类,我不这么认为,因为语义原因
这意味着该关联没有标识,仅用于为链接提供属性。但是在UML标准中值得交叉检查。如果您发现任何相反的证据,我准备调整我的附加备注。参见第199页的备注:备注。即使AssociationClass的所有端都具有isUnique=true,也可能有多个实例将端类的同一组实例关联起来。@GeertBellekens感谢您提供的丰富信息!我已经调整了措辞accordingly@Geert:您正确地指出AssociationClass不再定义唯一链接。事实上,它在UML2.5中失去了它的唯一性特性。我认为这是一个错误,因为这是它唯一的特点。这使得AssociationClass过时了,因为它们现在总是可以被一个中间类所取代。我认为,对于AssociationClass来说,在拍卖中每个买家最多出价一次的说法是不正确的。如果我在买家和拍卖之间有一个[]-[]的关联,那么这不允许在一个动作中每个买家有多个出价吗?@GeertBellekens,有一个合适的类,你可以。但是对于关联类,我不这么认为,因为语义上的原因,关联没有标识,只是给链接赋予属性。但是在UML标准中值得交叉检查。如果您发现任何相反的证据,我准备调整我的附加备注。参见第199页的备注:备注。即使AssociationClass的所有端都具有isUnique=true,也可能有多个实例将端类的同一组实例关联起来。@GeertBellekens感谢您提供的丰富信息!我已经调整了措辞accordingly@Geert:您正确地指出AssociationClass不再定义唯一链接。事实上,它在UML2.5中失去了它的唯一性特性。我认为这是一个错误,因为这是它唯一的特点。它使AssociationClass过时,因为它们现在总是可以用中间类替换。