静态类或对静态函数的调用如何在序列图中显示?根据我的理解,生命线属于一个类的实例/对象。本文指出可以使用元类构造型。
"如果有疑问,请使用评论或刻板印象"
序列图:
+-------------+ +-------------------+
| <<class>> | | <<class>> |
| Cat | | FastFoodTerminal |
+------+------+ +---------+---------+
| |
| <<static>> |
| TurnOn() |
+--------------------------->+---+
| | |
+<---------------------------+<--+
| |
| Answer = |
| DoYouHaveCheeseBurger() |
+--------------------------->+---+
| | |
+<---------------------------+<--+
| |
类图:
+-------------------------------------------------+
| <<class>> |
| FastFoodTerminal |
+-------------------------------------------------+
| [+] void: FastFoodTerminal(); <<constructor>> |
| [#] int: ObtainMoneyDifference(); |
| [+] void: ReceiveMoney(); |
| [+] void: ReturnChange(); |
| [+] FastFoodTerminal: TurnOn(); <<static>> |
+-------------------------------------------------+
在这个例子中;TurnOn();是一个静态方法,"对象"的实例(对象);FastFoodTerminal";班
所以最后是使用构造型来提及静态类/函数。下划线不再适用于UML 2.4.1 2011年8月,第86页,标题为符号和演示选项
我认为您的评论涵盖了大部分内容:
UML2序列图:注意对象标签是如何加下划线的,类和参与者是如何不加下划线的。听起来像是静态类或对静态函数的调用是用提供的相同的构造型表示的1-模式名称的名称部分:ClassName应该是空的2-不应该加下划线。
UML不能完全涵盖这一点,因为静态不是UML的定义,每种语言都有细微的差异。然而,"特性"的UML规范[pg.69](属性/操作):
isStatic:Boolean--指定此功能是表征由分类器(false)还是分类器本身(true)分类的单个实例。默认值为false。
注意,他们说的是分类器本身。所以问题是,我可以把分类器放在序列图中,而不是实例中吗?还请注意,这并不是说分类器可以是静态的。同一个UML规范的第27页在元类"分类器"(class)中没有显示isStatic。所以UML并没有为静态类提供正式的模型特性。您可以使用构造型或关键字,或者您自己的UML概要文件和扩展Class。但简单的答案是做你已经发布的事情。