UML Class 图:如果函数 return 是一个函数调用,函数的 return 类型是什么?

UML Class Diagram: What goes in the return type for the function if the function returns a function call?

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

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 class 图表中,我应该为 return 输入什么,如果它看起来像这样:

+ func(self): return 类型

我放:

+ func(self): ListParser(ls)

+ func(self): 文件[]

我到底要放什么它最终会 return 还是函数调用。

谢谢。

其实你的问题是不正确的。你的函数 func 不是 return 一个函数,而是一个函数的结果。据我所知,没有表示函数的通用类型。一个操作的return是一个Type

9.6.4 Notation If shown in a diagram, an Operation is shown as a text string of the form:

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

...

<return-type> is the type of the return result Parameter if the Operation has one defined.

因此,如果您想 return 一个函数,您或多或少可以自由地发明自己的符号。在大多数情况下,这将是特定于语言的(例如,在 Swift 中,对于没有参数的 void 函数,您将显示为 () -> ();对于 Python,您可以 'invent' 表示法 <func>到return一个函数)。

现在,如前所述,您 return 不是函数,而是函数的结果。那似乎是一个数组。我会假设一个字符串数组。所以我会显示为

假设以上是classClassWhatEver的一部分。请注意,签名不列出名称,而是列出类型,因此对于 self,您将显示 class 名称。如果您正在为 Python 建模并且有一些建模指南是这样说的,那么也可以将其保留。在那种情况下,您需要像这样对静态函数进行定型来区分它们:

N.B。您用大写 L 命名了 ListParser。尽管您应该遵守通用的命名规则,并且只对 classes、类型等使用首字母大写的字符,而不是用于操作。所以您应该将其命名为 listParser