序列图中如何呈现静态类或对静态函数的调用?据我了解,生命线属于一个类的实例/对象。这篇文章说可以使用元类原型。
3 回答
“如有疑问,请使用评论或刻板印象......”
序列图:
+-------------+ +-------------------+
| <<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 Aug 2011中,下划线不再适用,第 86 页,在Notation and Presentation Options标题下
我认为您的评论涵盖了大部分内容:
UML 2 序列图:注意对象标签是如何加下划线的,类和参与者不是它听起来像静态类或对静态函数的调用是用相同的构造型表示的 1- 模式名称的名称部分:类名应该为空 2-它不应该被强调。
UML 不能完全涵盖这一点,因为静态不是 UML 定义,每种语言都有细微的差异。然而, “特性”的 UML 规范[pg. 69](属性/操作):
isStatic: Boolean -- 指定此特征是表征由分类器分类的单个实例 (false) 还是分类器本身 (true)。默认值为假。
请注意,他们说的是分类器本身。所以问题是我可以把分类器放在序列图上,而不是实例上吗?另请注意,这并不是说分类器可以是静态的。同一 UML 规范的第 27 页显示元类“分类器”(类)中没有 isStatic。所以 UML 没有为静态类提供正式的模型特性。您可以使用构造型或关键字,或您自己的 UML 配置文件并扩展类。但简短的回答是做你已经发布的。