嗨,每个人都在试图理解UML,但是有一些问题呢
在UML中,使用构造型<<abstract>>
标记类的重要性是什么?
以及如何将此约束表示为不变量
答案 0 :(得分:4)
不存在构造型“抽象” - 应使用斜体字体描绘抽象类。抽象意味着一个类无法实例化。它需要一个子类来完成。所以作为伪代码约束,这意味着
for all instances i of MyAbstractClass holds: i.actualClass != MyAbstractClass
或在ocl中为MyAbstractClass持有
self.allInstances()->forAll(i: MyAbstractClass | i.classifier <> self)
由于第一个问题版本中没有显示“抽象”这个词,所以我扩展了一般的刻板印象:
首先:在学习UML时,刻板印象不应该是你要研究的第一件事。它们相当复杂。
刻板印象或关键字(均以<<MyStereotype>>
表示)没有一般含义。它由特定的刻板印象定义。通常你不能将刻板印象表达为不变量。
但是UML的其他一些方面可以用相同的方式显示:UML Metalevel中的一个类标有<<metaclass>>
,即使它没有构造型,甚至是不同的实际类型。刻板印象本身带有<<stereotype>>
标记(即使它们是特殊类的实例)。
自定义构造型的示例可以是“服务”。您可以使用代表服务的类来标记类。可能存在一个约束,告诉您“服务”必须实现特殊的接口。在这种情况下,您可以将此约束表达为(无聊)不变量。但可能它甚至只是一个标记。在后一种情况下,您可以使用关键字作为替代。