In
是的也不是!
是的,你可以给它建模!
UML活动图模型控制流和对象流。这两种方法在建模单个函数、功能组合和功能管道方面都非常实用:
- 函数将由行为表示。
- 如果需要的话,作文可以用活动边显示,如果需要的话,可以使用销钉来显示对象从一个流向另一个(如果您担心组合和排序之间的混淆)。
- 函数定义中的模式匹配可以用决策节点表示,您可以在其中使用模式作为传出分支的保护。
- 多个输入参数可以用连接节点表示,这样做的优点是不必对不同参数进行排序。
不,标准UML没有高阶函数
。
在标准的UML中,没有简单的方法来表示高阶函数:
- 高阶函数是函数式编程的核心特性.
- 但是在UML中,一个动作不能产生一个由另一个流执行的动作。它既不能接受动作作为另一个动作的输入。
- THis的内部限制来自于它的根,即petri网,其中控制流由在一个固定的节点网络中导航的令牌表示。
也许有一些UML专家可以使用调用动作找到解决办法,调用对应于类型函数的对象的函子。但即使这是可能的,我也不认为这是容易理解的。
注意:同样的限制发生在非UML模型上:数据流(DFD)和函数分解模型(SADT)总是认为活动是固定的。毕竟,如何区分连接两个函数的箭头和传递新功能的箭头?
结论
- 为了让你自己相信这是可行的,我邀请你看看一些活动图的例子,尽管这些例子都是以程序的方式设计的--试着想象一下你将如何以功能的方式实现它们,你会感到惊讶的。
- 对于缺少的高阶活动,我不知道该给什么建议。也许可以定制一个UML配置文件,以便直观地表示作为操作结果而产生的操作?