关于“抽象”和定型UML问题(UML Questions about 'abstract&#

2019-08-02 01:21发布

喜逢身体我试图了解UML,但也有一些关于它的问题

在UML什么是标记一类为原型的意义<<abstract>>

如何表达这种约束是不变的,

Answer 1:

刻板印象“抽象”不存在 - 一个抽象类,应使用斜体字描绘。 摘要意味着一个类不能被实例化。 它需要一个子类来做到这一点。 因此,作为一个伪码的约束,这将意味着

for all instances i of MyAbstractClass holds: i.actualClass != MyAbstractClass

或OCL的MyAbstractClass持有

self.allInstances()->forAll(i: MyAbstractClass | i.classifier <> self)

正如“抽象”不是你的第一个问题的版本显示的话,我扩大了一般刻板印象:

首先:在学习UML,定型不应该是你考虑的第一件事情。 他们是相当复杂的。

定型或关键字(两者以标记<<MyStereotype>> )不具有普遍意义。 它是由特定的构造型定义。 通常不能表达的刻板印象不变代替。

但UML的一些其他方面可以显示相同的方式:从UML元层次的类标有<<metaclass>>即使它没有一个刻板印象,甚至是不同的实际类型。 定型本身显示了<<stereotype>>标记(即使它们是一类特殊的情况下)。

自定义刻板印象的一个例子可能是“服务”。 你可能标志着它的类代表一个服务。 有可能是一个制约因素,它告诉你“服务”必须实现一个特殊的接口。 在这种情况下,你可以表达不变此约束的(无聊)。 但是大概它甚至只是一个标记。 在后一种情况下,你可以使用关键字作为替代品。



Answer 2:

我知道这个线程是一对夫妇岁,但我来到它时,它是由别人引用,作为配套的断言«abstract»刻板印象不是由UML规范的支持。 这种说法不是很准确,我想解释一下为什么。 我会澄清什么抽象类开始。

抽象类是不包括完整的实现类的定义。 因此,抽象类不能直接实例化; 他们要专门的(继承)。 抽象类是由斜体类名和属于抽象方法谱写,并且另外通过任选地加入{抽象}属性的类名和/或操作(方法,我们通常说,但方法实际上是“方法“通过该操作被实现),其是抽象的。

接口是抽象类没有实现; 他们的符号是与其它类型的抽象类的不同(不斜体,使用«interface»关键字,并记所有具有虚线的专业化箭头)。 所以,基督教在这里说,对于抽象类标准的符号 - 至少,有在类图。

现在,虽然这是事实,基督教也表示,该«abstract»刻板印象不存在,这也是事实,你可以创建它,如果你想和这样做是在UML规范的支持。 这是不可能的,你就会有一个理由(至少在类图中),但你仍然可以。

构造型是一种“扩展机制”的UML(有三种:定型,标记值和约束)。 它可以让你更具体的界定某种元素。 定型应用于类(元类实际上,元类是类,其实例也是类)。 许多定型是预先定义的“标准定型”(在UML 1.4他们被称为“标准元素”)。 这方面的例子是«metaclass» (同样,一类,其实例也是类)和«file» (在系统的上下文中的物理文件开发)。

定型是一种类型的关键字。 该规范( 上层建筑 2.0,附件B,P 663)有这样说的关键字:

UML关键字是保留的是UML表示法的一个组成部分,并且通常显示为附连到UML图形元素或作为在UML图文本行的一部分文本注释的话。 这些话......不能被用来命名用户定义的模型元素,其中将导致模型含混解释这样的命名。 例如,关键字“微量”是抽象的系统定义的原型(见附录C,“标准定型”),因此,不能用于限定任何用户定义的原型。

在UML中,关键字用于四个不同的用途:

  • 为了区分从其他特定UML概念(元类)共享相同的一般图形形式...

  • 为了区分特定种类从其他关系共享相同的一般图形形式UML概念(间的关联)之间关系的...

  • 要指定连接到UML概念(元属性值)的一些修正值...

  • 为了表示一个标准刻板印象(见附录C,“标准定型”)...

关键字始终封闭在guillemets(«关键字»),其作为视觉线索,以更容易地区别时正在使用的关键字......除了识别关键字,guillemets也被用来区分定型的用户配置文件中所定义的使用情况。 这意味着:

  1. guillemets之间出现并非所有的话都必然关键字(即,保留字),并
  2. 出现在guillemets话不一定代表定型。

换句话说,你可以创建任何你想要的刻板印象,只要它不是一个关键字。 由于“抽象”不是一个关键字,它遵循您可以创建一个«abstract»刻板印象。

为了做到这一点,但是,你就必须去一些麻烦,更麻烦的UML 2.0及以上的UML 1.4中。 UML 1.4只是说明一个刻板印象是对UML规范的扩展机制。 人们可以简单地定义的刻板印象,它适用于UML元一个想取其一部分,文档的更改。 UML 2.0想正式构造型的为UML元类的关系(UML图上的任何项是一个元类,和UML元模型的一部分)。 于是,他们想出了配置文件。 此示例图显示的配置文件是如何工作的:

现在,黑色箭头可能看起来有点奇怪,因为你没有看到它在任何情况下,但是这一个。 UML 2.0引入一个扩展,这将其定义为“的概念用来表示一元类的属性通过一个原型扩展”。 这个黑色箭头指示的扩展。

我还要举汤姆·彭德(UML的圣经 ,威利出版,2004)这张图的解释,因为他确实比规范更好的工作(我当然不能改进它):

它表明一个组件是由一个Bean铅板,这是需要延长。 豆刻板印象是一个抽象类,有两个亚型 - 实体和会话。 组件的每个实例,因此,必须由这两个实体原型或会话原型的一个实例延长。 请记住,一个刻板印象是那种可以有属性类的 - 在这种情况下,会话刻板印象有一个属性命名状态。 这相当于一个标记定义的值指定会话的状态。 标记值是枚举,StateKind,它具有一个无状态或有状态值。

组件上有一个约束,在连接到组件符号,其中指出,一个组件不能一概而论或专门的说明显示。

该图还示出了接口元类是由远程和家庭定型延长。 该EJB封装具有约束,因为在包装坐在说明显示,该州一个Bean必须意识到只有一个Home接口。

所以,你的确可以使用«abstract»如果你有理由去创造它的麻烦刻板印象。 最主要的原因,任何人都可能要为代表的不是一个类图的其他一些地方的抽象类。



文章来源: UML Questions about 'abstract' and stereotypes
标签: uml