我正在尝试为在线拍卖系统制作一个类图,我遇到了这个问题。出价同时属于拍卖和买方(如果我错了,请纠正我)。那么我可以说用户是由竞价组成的,拍卖是由Bid组成还是违反UML的规则?我糊涂了
术语构成含糊不清,这解释了你的困惑:
因此,在UML意义上,不可能有一个对象是两个不同组合的一部分,因为所有权将不再是排他性的。但是你可以在几个aggregations中使用该对象,这是一个允许共享所有权的整体关系。
在OOP意义上,没有问题是在(或使用)几种组合物中使用相同的对象。对象组成对应于navigable UML association。
情况很直接:一个Bid
有一个Buyer
,一个Buyer
可能有几个Bids
,而Auction
有几个Bids
。您可以使用简单关联对此进行建模:
你也可以在这里使用聚合,因为有人可能会说Auction
和相应的Bids
之间存在整体关系(个人而言,我不会这样看):
但是你不应该在另一边看到聚合,因为Buyer
和Bid
之间没有真正的全部关系:Buyer
不是“由几个Bids
组成”。
你也可以在这里使用一个关联类。但这不是必需的。语义会有所不同:这意味着Bid
和Buyer
之间存在Auction
关联:
Bid
是Buyer
和Auction
的附属物,并且不能单独存在(例如,如果买方消失)您是否了解过UML中的关联类?它们表示根据两个其他类之间的关系创建的对象,正是您要映射的对象。详细介绍了关联类的内容(例如Correct use of an association class)
这样你就不应该对阅读图表(你正确地做了btw)感到困惑,你会清楚存在实体Bid,它只存在于买方和拍卖中。