女人有多个老公?谈关联多重性-《软件方法》8.3.2.2.2

DDD领域驱动设计批评文集

做强化自测题获得“软件方法建模师”称号

《软件方法》各章合集

《软件方法》最近在第8章做了一些调整,把识别关联的内容提到识别泛化之前,并增加了一些内容:

8.3.1.2 区分几个术语

在使用连接、关系、关联、链接等几个看起来很相似的术语时,要注意它们之间的区别:

(1)connection(连接)

普通用词,在UML中无特别含义。也就是说,connection是这几个里面最垫底的、最基础的。

(2)relationship(关系) 

定义为:模型元素之间的连接。注意定义中的用词是“连接(connection)”,而不是“关联”(association),更不是“链接”(link),因为这些是在“关系(relationship)”之后定义的。

关系的含义很广,包括类的泛化、关联、依赖,用例的扩展、包含,包的依赖、导入等等。

(3)association(关联) 

定义为:实例之间存在连接的类元(classifier)关系。

这里的类元不一定是类,当然,关联最常用来表示的就是类之间的关联。 

(4)link(链接) 

定义为:关联的实例。和对象是类的实例类似。

对比如图8-96:  

图片

图8-96 关联和链接(注意,左侧类图有多重性,右侧对象图没有多重性。)

8.3.2.2.2 多重性

首先要说一下Multiplicity(多重性)和Cardinality(基数)的区别。

多重性指关联端所允许的对象数量范围,如果数量大于1,还包括其有序性和唯一性。基数指某个关联实例中,关联端的具体对象数量。

也就是说,多重性规定了一个范围,基数必须在这个范围之内。显然,类图上出现的应该是多重性,讨论对象和链接时,才使用基数。

★《UML参考手册》中,cardinality词条只是简略地说了一句,而multiplicity有3页。

常用的多重性范围表示如图8-103。

图片

图8-103 关联多重性表示

建模中我们往往更关注的范围的上限,所以一般情况下使用1(涵盖0..1和1..1)和*(涵盖0..*和1..*)就好,以免图上出现大量的0影响阅读。等到有足够的证据说明某个关联端必须清晰标出下限,再改为更严格的上下限形式。

对于多重性,建模人员容易出现的问题是把不同时间的链接快照合并成一个。

例如,男人和女人可以有“夫妻”关联,那“夫妻”关联的多重性是多少?中国是一夫一妻制度,按道理应该1对1,如图8-104上部。但有的建模人员会想,不对呀,有的人一生结好几次婚,那不是有几个配偶吗?是否应该如图8-104下部? 

图片

图8-104 “夫妻”关联的多重性

图8-104上部是正确的。在任何时间拍摄快照,拍到的应该是一个男人最多和一个女人有“夫妻”链接,不会拍摄到一个男人和多个女人存在“夫妻”链接,对女人来说,也是如此。

不过,拍摄快照确实可以拍到一个男人和多个女人存在“前夫妻”链接,如果要关注男人和女人的“前夫妻”关联,这个关联的多重性是多对多的,如图8-105。 

图片

图8-105 “前夫妻”的多重性

8.3.2.2.3 关联的方向

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值