什么是UML中的“Stereotype”,如何使用它?

6

我正在为JAVA软件设计绘制一个类UML图。我不太理解什么是“构造型”。它的正式定义是:

构造型是一种配置文件类,它定义了如何扩展现有的元类作为配置文件的一部分。它使得在扩展的元类中可以使用特定于平台或领域的术语或符号,以代替或补充原本使用的术语或符号。

这是不是意味着构造型应该是父类的名称?但是为什么有些超类也有构造型呢?

例如,我有一个超类Animal和一个扩展自Animal类的类Dog,这两个类的构造型可能是什么?此外,为什么有些类没有构造型?

1个回答

8

什么是"stereotype",以及它的目的是什么?

"Stereotype"通过允许比UML本身更详细地对某些元素进行分类来扩展UML。它有助于使模型更富表现力。

一个经典的例子是"实体(Entity)"、"控制(Control)"和"边界(Boundary)"这些"Stereotype"。它们在基于用例的设计中使用:在类图中,您可以立即找到哪些类表示用例逻辑(标记为"«control»"Stereotype),哪些类代表带有参与者的用户界面("«boundary»"Stereotype),以及哪些类代表业务/领域对象(标记为"«entity»")。

Stereotype的另一个用途是指示类应该如何实现,例如将相应于内存中对象的数据库表标记为"«table»"的类,或指示哪些对象是"«persistent»"的。 Stereotype的更常见用法是显示特定于语言并且在UML中没有等效项的一些概念。我特别想提到C#"«struct»",它具有值语义,而C#类具有引用语义,或者C#中的属性(在属性级别上是一种Stereotype)。

如何定义"Stereotype"?

Stereotype在配置文件中定义。您可以将Stereotype视为配置文件图中的一个类。

但这不是普通的类,您无法将其与模型中的其他类相关联。因此,在此处没有继承。Stereotype是与“元模型”相关的类,这意味着UML标准中定义的UML标准元素。因此,它是类的类(或关联的类,或任何其他UML元素的类)。

为了举例说明,假设有一个抽象超类Animal和具体子类CatDog

  • 你可以为它们创建一个 «实体」 档案,因为它们都属于领域模型。
  • 如果你希望使用具体表继承 (concrete table inheritance) 模式将对象存储到 RDBMS 中,则可以为 CatDog 使用「持久化」(persistent) 构造型(因为具体表继承模式不为抽象类实现持久化)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接