如何在序列图中显示静态类或函数调用?

时间:2012-02-02 07:36:43

标签: static uml sequence-diagram

如何在序列图中显示静态类或静态函数的调用?根据我的理解,生命线属于类的实例/对象。 This article表示可以使用元类构造型。

3 个答案:

答案 0 :(得分:8)

“如有疑问,请使用评论或刻板印象......”

序列图:

.......................................................
....+-------------+...........+-------------------+....
....|  <<class>>  |...........|     <<class>>     |....
....|     Cat     |...........|  FastFoodTerminal |....
....+------+------+...........+---------+---------+....
...........|............................|..............
...........|..........<<static>>........|..............
...........|...........TurnOn().........|..............
...........+--------------------------->+---+..........
...........|............................|...|..........
...........+<---------------------------+<--+..........
...........|............................|..............
...........|.......Answer...=...........|..............
...........|..DoYouHaveCheeseBurger()...|..............
...........+--------------------------->+---+..........
...........|............................|...|..........
...........+<---------------------------+<--+..........
...........|............................|..............
.......................................................

类图:

...........................................................
....+-------------------------------------------------+....
....|                    <<class>>                    |....
....|                FastFoodTerminal                 |....
....+-------------------------------------------------+....
....| [+] void: FastFoodTerminal();   <<constructor>> |....
....| [#] int: ObtainMoneyDifference();               |....
....| [+] void: ReceiveMoney();                       |....
....| [+] void: ReturnChange();                       |....
....| [+] FastFoodTerminal: TurnOn(); <<static>>      |....
....+-------------------------------------------------+....
...........................................................

在这个例子中,“TurnOn()”是一个返回的静态方法, “FastFoodTerminal”类的实例(对象)。

答案 1 :(得分:6)

所以最后是使用构造型来提及静态类/函数。下划线不再适用于UML 2.4.1 Aug 2011,第86页,标题表示法演示文稿选项

答案 2 :(得分:4)

我认为你的评论涵盖了大部分内容:

  

UML 2序列图:注意对象标签是如何加下划线的,类和actor是不是听起来像静态类或静态函数的调用用相同的构造型表示1-模式名称的名称部分:ClassName应该是空2-不应该加下划线。

UML无法完全覆盖这一点,因为静态不是UML定义,每种语言都有轻微的差异。但是"features" [pg。 69](attr / operations):

  

isStatic:Boolean - 指定此功能是否表征由分类器(false)或分类器本身(true)分类的各个实例。默认值为false。

请注意他们说分类器本身。所以问题是我可以将分类器放在序列图中,而不是实例吗?另请注意,并不是说分类器可以是静态的。同一UML规范的第27页显示元类“分类器”(类)中没有isStatic。因此,UML不为静态类提供正式的模型功能。您可以使用构造型或关键字,或您自己的UML配置文件并扩展Class。但简短的回答是做你已发布的。