如何在 UML 类图中表示函数/方法类型

问题描述 投票:0回答:1

是否有标准方法在 UML 类图中表示命名函数类型?

所谓的命名函数类型,是指具有特定签名(参数、返回类型、可能是泛型参数)的函数或方法类型,已为其分配了别名,然后在整个类模型中引用该别名。

这个概念在各种不同的语言中都是众所周知的,例如:

C#:

public delegate string GetTextFunc(int value, bool modify);

打字稿:

type GetTextFunc = (value: number, modify: boolean) => string;

(是的,实现上存在差异,但为了类模型,这些应该是无关紧要的。)

如何在 UML 类图中表示这样的类型?到目前为止,我找不到任何标准化的答案,我考虑过将它们硬塞到一个类元素中,同时使用自定义的刻板印象来表达含义,例如:

但是,在这个问题中,我明确寻找标准化方法来执行此操作(如果有的话)。

uml function-pointers
1个回答
1
投票

UML 中没有表示函数或函数类型的标准方法。

但是函数类型描述了一类函数,因此类绝对是正确的选择。使用非标准构造型

«function»
将有助于区分这种非常特殊的类(另请参阅有关相关但不相同的问题的其他答案)。

关于参数,你的路可以被捍卫。然而,从语义上讲,这是有问题的,因为它们并不是真正的公共属性,并且仅在一次特定调用时存在。更一致的方法是没有属性(也许私有静态属性除外,因为它们是唯一可以代表独立于调用的函数的属性)并使用伪操作(如 C++ 中的

operator()(...)
)您的函数的确切签名。从语义上讲,这与特定函数及其函数类型之间继承的使用是一致的。它还将与序列图的所有语义保持一致。

请记住,操作是命名元素,因此您必须命名伪操作,即使在您的代码中没有这样的名称。

© www.soinside.com 2019 - 2024. All rights reserved.