UML错误描述了对象语言?

时间:2016-09-07 14:44:57

标签: class inheritance casting uml programming-languages

我已经读过UML默认假设:

  1. 一个类可以继承其他几个
  2. 一个对象只是一个类的实例
  3. 给定类的对象不能更改为另一个类
  4. 这引出了一个问题:由于有3个假设,因此有2 ^ 3种可能的组合。你能给我一些语言作为每个语言的例子吗?

    我的意思是对我来说Java是" false-true-true"和C ++是" true-true-true"。那6个人怎么样?还是我误解了这些假设?

1 个答案:

答案 0 :(得分:1)

让我们看一下OMG的UML 2.5标准,以获得明确的答案:

1.Class继承

UML 2.5标准清楚地定义了一个类可以没有或有几个超类,相反,一个类可以是none或几个类的超类(参见11.4.2和11.8.3.6节)。

因此,UML最终允许多重继承(如在C ++或Python中)。但是你也可以限制自己,只使用单继承和几个接口实现,比如Java和C#。您使用实现关系来显示"继承"从抽象接口(然后点缀继承箭头)。

<强> 2。对象和类

  

9.8.1: InstanceSpecifications表示已建模的分类器实例   系统。它们通常用于模拟示例配置   实例

仅供参考:标准中使用的术语更为通用,但是对象是实例,而类是分类器。然后在第9.8.3章的语义中进一步细化该定义:

  

实例规范可以表示:
•分类   例如一个或多个分类器,其中任何一个都可以是抽象的。

因此,UML允许对象成为多个类的实例化。我不知道允许这种语言的语言,但如果你不愿意评论;-)。

第3。更改对象类

我必须承认,我无法100%回答这个问题。我不这么认为,因为,成为另一个类的实例意味着重新实例化一个类,因此它不再与实例化的定义相对应。
此外(见9.8.3):

  

InstanceSpecification可以表示某个时间点的实例   (快照)。可以使用multiple对实例的更改进行建模   InstanceSpecification,每个快照一个。

这有些含糊不清:给定图表中的给定对象无法更改类。但是,您可以在不同的图表(快照)中多次表示对象以显示更改。

<强>结论

因此,如果您在图表或模型级别进行推理,那么您的假设1为真,2为假,3为真或假。