我已经读过UML默认假设:
这引出了一个问题:由于有3个假设,因此有2 ^ 3种可能的组合。你能给我一些语言作为每个语言的例子吗?
我的意思是对我来说Java是" false-true-true"和C ++是" true-true-true"。那6个人怎么样?还是我误解了这些假设?
答案 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为真或假。