Jam*_*sen 21 inheritance uml stereotype
我对UML中"刻板印象"和"超类"之间的区别感到困惑.
假设我想创建一个涉及" WidgetMaker." 的图表. WidgetMaker显然是一个ActorUML标准是刻板它的演员:
<<Actor>> WidgetMaker
Run Code Online (Sandbox Code Playgroud)
但我在Java/Ruby/C++世界中长大了编程.在那个世界里,这种关系是:
class Actor
end
class WidgetMaker < Actor
end
Run Code Online (Sandbox Code Playgroud)
在UML中看起来像这样:
Actor
^
|
WidgetMaker
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:为什么UML有过一次定型时,你可以很容易地使用模型类的继承,它的概念也有.
一旦我们有更多"种类"的演员,问题变得更加模糊:
Actor
^
|
------------------------
| | |
Person Robot Group
^
|
WidgetMaker
Run Code Online (Sandbox Code Playgroud)
与
<<Actor>> <<Person>> WidgetMaker
Run Code Online (Sandbox Code Playgroud)
据我所知,构造型的主要目的是实现UML本身的扩展(作为建模语言),而不是模拟任何东西.
话虽如此,我还认为你的问题意味着另一个可能的有效答案:有些人更喜欢使用刻板印象来指定(非正式地)类之间的某些共性.他们可能这样做只是因为它比子类更容易,并且对于他们的模型而言"足够好".
例如,许多软件系统具有代表所谓的域实体的类(诸如公司,客户,采购订单,产品等).最终,你可能希望有一个共同的类一样Entity导出Company,Customer从等.但最初它可能是足以只使用定型类,如这些<<Entity>> Company,<<Entity>> Customer等从本质上讲,它只是一个建模工作的便利性(和成本/效益!)的事情.
刻板印象存在并用于呈现有关工件的更多信息,而文档或将其分类为特定工件块可能无法提供这些信息。例如,您已经识别了一个数据类,您可以给它命名,解释属性和操作,但它本身可能无法提供完整的信息。当您将其构造为 <> 时,它指定了完整的信息;在此之前,它与开发人员的任何其他课程一样继续。
\n\n“构造型用于扩展 UML 符号元素,分类和扩展关联、继承关系、类和组件”
\n\nStereotype 提供了创建新型建模元素的能力。构造型必须基于属于 UML 元模型一部分的元素。类的一些常见构造型是实体、边界、控制、实用程序和异常。类的构造型显示在包含在 guillemets 中的类名下方(即\xc2\xab和\xc2\xbb,发音为gee-may)。如果需要,图形图标或特定颜色可以与原型相关联。