UML类图:如果函数返回函数调用,函数的返回类型是什么?

时间:2016-11-27 19:47:59

标签: python uml class-diagram

所以我有一个函数可以说:

def func(self):
    ls = []
    #do something to ls 
    return self.ListParser(ls)

def ListParser(self, ls):
    files = []
    # do some stuff with ls and files
    return files

所以在uml类图中,如果看起来像这样,我应该为返回类型添加什么:

+ func(self):返回类型

我把:

+ func(self):ListParser(ls)

+ func(self):files []

我会把最终返回的内容或函数调用。

谢谢。

1 个答案:

答案 0 :(得分:2)

其实你的问题不正确。函数func不返回函数,而是函数的结果。据我所知,没有代表函数的常见类型。操作的返回是Type

  

9.6.4表示法   如果在图中显示,则操作显示为以下形式的文本字符串:

[<visibility>] <name> ‘(‘ [<parameter-list>] ‘)’ [‘:’ [<return-type>] [‘[‘ <multiplicity-range> ‘]’] [‘{‘ <oper-property> [‘,’ <oper-property>]* ‘}’]] 
     

...

     

<return-type>是返回结果的类型,如果操作定义了一个参数。

因此,如果您想要返回一个函数,那么您或多或少可以自由发明自己的符号。在大多数情况下,这将是特定于语言的(例如,在Swift中,您将为没有参数的void函数显示为() -> ();对于Python,您可以“发明”符号<func>以返回函数。)< / p>

现在,正如已经说过的,你不会返回一个函数,而是函数的结果。这似乎是一个阵列。我会假设一个字符串数组。所以我会把它表示为

enter image description here

假设上述内容属于类ClassWhatEver的一部分。请注意,签名不会列出名称,而是列出类型,因此对于self,您将显示类名。如果您正在为Python建模并且有一些建模指导原则,那么也可以将其留下。在这种情况下,您需要区分静态函数,如此刻板印象:

enter image description here

N.B。您使用大写ListParser命名L。虽然你应该坚持使用通用的命名规则,并且只对类,类型等使用大写第一个字符,而不是操作。因此,您应该将其命名为listParser