unk*_*dev 2 oop uml composition object-oriented-analysis
我正在尝试为在线拍卖系统制作类图,但遇到了这个问题。出价属于拍卖和买方(如果我错了,请纠正我)。那么我可以说 User 由 bid 组成,而 racing 由 Bid 组成,或者这违反了 UML 规则?我很困惑
术语“组合”含糊不清,这解释了您的困惑:
因此,从 UML 意义上来说,一个对象不可能属于两个不同的组合,因为所有权不再是排他的。但是您可以在多个聚合中使用该对象,这些聚合是允许共享所有权的整体-部分关系。
在 OOP 意义上,不存在在(或使用)多个组合中使用相同对象的问题。对象组合对应于可导航的UML关联。
情况很简单:ABid有一个Buyer,aBuyer可能有多个Bids,并且 anAuction有多个Bids。您可以使用简单的关联对此进行建模:
您也可以在这里使用聚合,因为有人可能会认为 anAuction和对应项之间存在整体-部分关系Bids(就我个人而言,我不会这样看待它):
Buyer然而,您不应该在另一侧看到聚合,因为 a和 a之间不存在真正的整体关系Bid: aBuyer不是“由多个组成Bids”。
您还可以在这里使用关联类。但这不是必需的。并且语义会有所不同:这意味着BidaBuyer和 an之间存在关联Auction:
Bid是 the 的附属品,Buyer并且 theAuction不能单独存在(例如,如果买家消失)