《分析模式》漫谈08-单继承不是“唯一继承”

DDD领域驱动设计批评文集

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

《软件方法》各章合集


《分析模式》第2章这一段:

图片

划线处的single inheritance,2004中译本的翻译:

图片

翻译为“单继承”,是正确的。

2020中译本的翻译:

图片

翻译为“唯一的继承”,这个就不对了。

这里的single inheritance应该就是面向对象编程语言里面的single inheritance。

找了几本不同编程语言的书,看看其中是怎么翻译的: 

图片

图片

图片

single inheritance主要出现在一些编程语言中。UML规范用的词是generalization,不是用inheritance,所以,纯UML建模书里面不一定会出现single inheritance的用词。

百度,我们搜‘“single inheritance 继承”,出来的是“单继承”:

图片

我们来看另外一个问题:

如果译者觉得就是不喜欢把single inheritance译作“单继承”,创新一下,译作“唯一继承”,可不可以呢?

我们来看看下面这个图:

图片

我们还是顺着《分析模式》原文,以医生作为例子。医生按科室分子类,有儿科医生、内科医生、外科医生,按级别分子类,有住院医生、主治医生、主任医生。

这是不同的泛化集(generalization set),表现为两棵泛化树。

图上依然是“单继承”,一个类最多有一个超类,但不是“唯一的继承结构”。

**********

我们看一下自反关联的不同多重性所得到的对象图的不同结构,就可以知道原文的意思。

多对多自反关联,所得到的对象图是网状结构;

1对多自反关联,所得到的对象图是树状结构;

——只允许单继承的泛化结构,有泛化关系的类就组成了一棵树。当子类被取消,成为“**类型”的一个实例时,之前由类组成的树,就变成了“**类型”的实例组成的树,即“**类型”的1对多自反关联的对象图。

0..1对0..1自反关联,所得到的对象图是队列结构;

严格的1对1自反关联,所得到的对象图是环状结构;

——最小的环就是两个对象的环,例如“人”之间的“夫妻”自反关联。

图片

图片

 

 

  • 21
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值