我正试图为一个在线拍卖系统制作一个类图,我遇到了这个问题。出价既属于拍卖,也属于买方(如果我错了,请纠正我)。那么,我可以说用户是由出价组成的,而拍卖是由出价组成的,还是这违背了UML的规则?我很困惑
发布于 2019-02-16 22:08:16
总体而言
构图一词含糊不清,这就解释了你的困惑:
因此,在UML意义上,不可能有一个属于两个不同组合的对象,因为所有权不再是独占的。但是您可以在几个集合体中使用对象,这是一个完整的关系,允许共享所有权。
在面向对象的意义上,在多个组合中使用(或使用)相同的对象是没有问题的。对象组合对应于通航 UML 协会。
在你的实际案例中
现在的情况是直接的:Bid有一个Buyer,Buyer可能有几个Bids,Auction有几个Bids。您可以使用简单的关联来建模:

您也可以在这里使用聚合,因为您可能会认为Auction和相应的Bids之间存在着完整的部分关系(我个人不认为它是这样的):

但是,您不应该看到另一面的聚合,因为在Buyer和Bid之间没有真正的整体关系:Buyer不是“由多个Bids组成的”。
补充意见
您也可以在这里使用关联类。但这不是必需的。语义也会有所不同:这意味着在Bid和Buyer之间存在着一个Auction关联:
Bid是Buyer和Auction的附件,不能单独存在(例如,如果买方消失了)。发布于 2019-02-16 20:18:54
您了解过UML中的关联类吗?它们表示一个对象,该对象是从其他两个类之间的关系创建的,这正是您要映射的对象。有大量的内容详细描述关联类(例如,正确使用关联类)
这样,您就不应该混淆阅读图表(顺便说一句,您做的是正确的),您可以清楚地看到实体出价的存在,它只存在于买方和拍卖双方。
https://stackoverflow.com/questions/54726915
复制相似问题