1
1
你不是在问UML问题,而是在问一个更一般的问题。 继承是什么意思? ClassC是ClassA的一个子类。在每个实现继承的编程语言中,ClassC都具有ClassA的所有特性。 在不支持继承的语言中,必须通过确保ClassA的所有特性也是ClassC的一部分来创建正确继承的假象。 这就是继承的定义。永远,永远。即使在UML图中。 |
2
2
简单的答案是肯定的(而且你不需要为了最实际的目的而超越它)。 但问题比看起来更复杂;引用《统一建模语言参考手册》第二版:
我记得2003年有一个很长的讲座,讲的是泛化和继承之间的区别。简而言之,这两个概念属于软件设计的不同层次,或者引用UML提炼的第三版“建模的不同视角”中的Martin Fowler的话:
泛化的概念属于概念设计层面。 但是继承是一个属于实现视角的概念:
我记得一个例子,泛化和继承之间的区别确实很有意义: 正方形是一个长方形。这源于他们在数学上的定义:
在设计阶段,正方形和矩形之间存在一个泛化关系。 但在实施层面,情况并非如此:
继承Square类中Rectangle类的宽度和高度会产生反作用,这需要额外的约束,以确保为宽度的setter和高度的setter提供相同的值。 在这种情况下(我承认有点急躁),您不会将泛化关系转换为在实现级别使用继承。 好吧,就是那些日子。 |
3
1
由于继承是一种“is-a”(非双关语)关系,因此可以将其理解为“ClassC是ClassA,它知道ClassB”,因此:
——是的: |
ChumboChappati · UML:组合或依赖 6 年前 |
Har · UML-两个实体之间的多重分解关系 6 年前 |
dnjsdnwja · 地图属性的Uml类图替代 6 年前 |
user1323 · 用例图。结合用例是好的还是坏的做法? 6 年前 |
eshkere111222333 · 聚合vs组成 6 年前 |