我正在尝试为在线拍卖系统制作类图,但遇到了这个问题。出价属于拍卖和买方(如果我错了,请纠正我)。那么我可以说用户由出价和拍卖由出价组成还是违反 UML 规则?我很困惑
2 回答
4
一般来说
术语组合是模棱两可的,这解释了你的困惑:
所以在 UML 意义上,不可能有一个对象是两个不同组合的一部分,因为所有权将不再是独占的。但是您可以在多个聚合中使用该对象,这些聚合是允许共享所有权的整体关系。
在 OOP 意义上,在多个组合中使用(或使用)相同的对象是没有问题的。对象组合对应于一个可导航的UML关联。
在你的实际情况下
情况很简单:ABid有一个Buyer,aBuyer可能有几个Bids,anAuction有几个Bids。您可以使用简单的关联对其进行建模:
您也可以在这里使用聚合,因为有人可能会争辩说 anAuction和对应之间存在整体关系Bids(就我个人而言,我不会这样认为):
Buyer但是,您不应该在另一边看到聚合,因为 a和 a之间没有真正的整体关系Bid: aBuyer不是“由多个组成的Bids”。
附加说明
您也可以在这里使用关联类。但这不是必需的。并且语义会有所不同:这意味着a和 anBid之间存在关联:BuyerAuction
- 从技术上讲,您仍然需要三个课程。
- 但重点不同:the
Bid是 the 的附属品,Buyer并且Auction不能单独存在(例如,如果买家消失了)
于 2019-02-16T22:08:16.167 回答
2
你了解过 UML 中的关联类吗?它们代表从其他两个类之间的关系创建的对象,正是您要映射的对象。有很多详细说明关联类的内容(例如正确使用关联类)
这样您就不会在阅读图表时感到困惑(顺便说一句,您做得正确),您会很清楚存在实体 Bid,它仅与买方和拍卖相关联。
于 2019-02-16T20:18:54.667 回答

