首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个组合能拥有相同的对象吗?

问两个组合能拥有相同的对象吗?
EN

Stack Overflow用户
提问于 2019-02-16 19:36:05
回答 2查看 836关注 0票数 1

我正试图为一个在线拍卖系统制作一个类图,我遇到了这个问题。出价既属于拍卖,也属于买方(如果我错了,请纠正我)。那么,我可以说用户是由出价组成的,而拍卖是由出价组成的,还是这违背了UML的规则?我很困惑

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-16 22:08:16

总体而言

构图一词含糊不清,这就解释了你的困惑:

  • 在OOP中,对象合成意味着在另一个对象中使用一个对象。
  • 在UML中,作文是一种特殊的关联,它代表了一个部分-整体关系,并由整体对各个部分拥有独占的所有权。

因此,在UML意义上,不可能有一个属于两个不同组合的对象,因为所有权不再是独占的。但是您可以在几个集合体中使用对象,这是一个完整的关系,允许共享所有权。

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

在你的实际案例中

现在的情况是直接的:Bid有一个Buyer,Buyer可能有几个Bids,Auction有几个Bids。您可以使用简单的关联来建模:

​

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

​

​

但是,您不应该看到另一面的聚合,因为在Buyer和Bid之间没有真正的整体关系:Buyer不是“由多个Bids组成的”。

补充意见

您也可以在这里使用关联类。但这不是必需的。语义也会有所不同:这意味着在Bid和Buyer之间存在着一个Auction关联:

  • 从技术上讲,你还有三节课。
  • 但是焦点不同:Bid是Buyer和Auction的附件,不能单独存在(例如,如果买方消失了)。
票数 4
EN

Stack Overflow用户

发布于 2019-02-16 20:18:54

您了解过UML中的关联类吗?它们表示一个对象,该对象是从其他两个类之间的关系创建的,这正是您要映射的对象。有大量的内容详细描述关联类(例如,正确使用关联类)

这样,您就不应该混淆阅读图表(顺便说一句,您做的是正确的),您可以清楚地看到实体出价的存在,它只存在于买方和拍卖双方。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54726915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档