如何显示静态方法UML类图的用法

时间:2012-06-26 14:11:05

标签: oop uml class-diagram conceptual

如何在UML类图中显示静态方法的使用?

class A{
    public static void test(){
    }
}

class B{
    public void b(){
    A.test();
    }
}

类图如何显示,它显示了这种关系?如果存在差异,将准备UML 2.0。

3 个答案:

答案 0 :(得分:14)

要显示静态方法,请在静态方法的名称下划线 - 查看here以获取更详细的信息。

至于导航这种关系; class B取决于class A的存在。我们可以说B类在A类上有“使用依赖性”

class B ----uses----> class A

希望这有帮助。

答案 1 :(得分:9)

@RobertMS是对的。

另一种选择是使用构造型

..............................................................
....+----------------------------------------------------+....
....|                StringUtilityClass                  |....
....+----------------------------------------------------+....
....| [+] void: lowerCase()              <<non virtual>> |....
....| [+] void: upperCase()              <<non virtual>> |....
....| [+] String: toString()                <<override>> |....
....+----------------------------------------------------+....
....| [+] String: LowerCaseCopy(String Value) <<static>> |....
....| [+] String: UpperCaseCopy(String Value) <<static>> |....
....| [+] String: ReverseCopy(String Value)   <<static>> |....
....+----------------------------------------------------+....
..............................................................

注意 一些编程语言最佳实践,特别是那些C区分大小写的语法,大写静态函数,并将其余函数保留为驼峰小写。

干杯。

答案 2 :(得分:8)

要显示静态方法和属性,请在UML类图中为它们加下划线:请参阅UML Distilled第66页或UML Superstructure specification的第7.3.19节(功能):

  

静态功能加下划线。

要显示类B和A之间的关系(其中B仅在A中使用静态方法),您使用依赖关系,而不是关联。关联始终位于每端类的实例之间,如UML超结构规范的7.3.3节(关联):

  

关联指定可能发生的语义关系   在键入的实例之间。

但是B类在A类上是依赖,如规范7.3.12节所述:

  

依赖关系是表示单个或一组的关系   模型元素需要其他模型元素   规范或实施。

可能值得用刻板印象来澄清依赖性的本质。你可以使用use构造型,但这是非常通用的,实际上包含了实例之间的标准关联(尽管你通常使用关联来明确地显示它们)。正如Fowler在UML Distilled中所说,

  

许多UML关系意味着依赖。可导航的协会   从订单到客户[在他的一个例子中......]意味着订单是   依赖于客户。

似乎没有关于使用什么刻板印象的标准。我已经使用usesStatically来明确依赖的性质;

B --usesStatically--> A

(或者,如果B类有一个A实例作为静态字段,如果我在类图中明确表示B,我会使用B--containsStatically--> A之类的东西;否则只有一个带下划线的静态属性B中的A型。)