Parameters 在UML中输入、输出、输入、返回参数方向

Parameters 在UML中输入、输出、输入、返回参数方向,parameters,call,uml,specifications,Parameters,Call,Uml,Specifications,当我通过OMG 2.5(Beta版)推出的UML规范阅读以下概念时: in:表示参数值由 来电者 inout:表示调用者传入参数值,然后返回调用者 out:指示参数值传递给调用方 return:指示将参数值作为返回值传递回调用方 这是否意味着“in”是按值调用的 “inout”作为引用调用 您能稍微澄清一下这些概念吗?引用调用是inout和out的一种可能实现,是的 请记住,UML是以与语言无关的方式描述行为的。由实际语言中给定接口的实现来确定这意味着什么 在像Ada这样的语言中,使用语言级别I

当我通过OMG 2.5(Beta版)推出的UML规范阅读以下概念时:

in:表示参数值由 来电者

inout:表示调用者传入参数值,然后返回调用者

out:指示参数值传递给调用方

return:指示将参数值作为返回值传递回调用方

这是否意味着“in”是按值调用的 “inout”作为引用调用


您能稍微澄清一下这些概念吗?

引用调用是
inout
out
的一种可能实现,是的

请记住,UML是以与语言无关的方式描述行为的。由实际语言中给定接口的实现来确定这意味着什么

在像Ada这样的语言中,使用语言级别
In
out
In-out
参数,这可以直接用语言表示,编译器可以决定引用或复制是更好的实现。在Python这样的语言中,所有参数都是通过引用传递的(有点类似),UML级别的意图表示法在实现级别不会产生任何区别。在像C这样的语言中,有显式的指针类型和所有通过值传递的参数,这些用UML表示的意图变成了显式的地址引用和指针解引用


换言之,简短的回答是“是的,这大致就是它的意思,但它可能不是它所做的。”

关于UML,需要记住的关键是它被设计成通用的,它被设计成独立于实现平台。具体来说,它是一个PIM,一个独立于平台的模型。因此,使用特定于平台的实现语义(如“按值”和“按引用”)是一种用词不当的做法

现在,在实践中,定义那些特定于领域的语义是项目架构师的一项工作,在许多情况下,您提到的那些语义是有效的,但情况并非总是如此


plus=.

•输入参数中(不可修改)

•out-输出参数(可修改以向调用者传达信息)

•inout-可修改的输入参数

•return-呼叫的返回值。

查看时,我们发现有一点变化:

in:表示参数值由 来电者

inout:表示调用方传入的参数值和传出的(可能不同)值 给打电话的人

out:指示参数值传递给调用方

return:指示将参数值作为返回值传递回调用方

它还包含一个注释:最多只能将一个参数标记为返回参数

我找不到有关此ParameterDirectionKind枚举的任何进一步定义/说明

也就是说,UML不想进一步说明这一点。而且最肯定的是,它没有指定它们中的任何一个作为按引用传递或按值传递。

in既不表示按值传递参数,也不表示按引用传递参数

根据第13.2.3.2条的行为参数:

调用行为时,可能会提供与方向为“in”或“inout”的参数对应的参数值,这些参数受这些参数的多重性约束。。。参数值可用于影响调用的行为执行过程

第9.4.3.5条参数规定:

effect属性可用于指定传入或传出参数的对象的情况

例如,“删除”效应意味着:

行为执行完成后,作为参数值的对象不存在

然后明确指出:

只有in和inout参数可能具有“删除”效果


按值传递或按引用传递是实现方法,两者都可用于实现in、inout和out参数。在C语言中,如果UML模型要求您这样做,您可以按值传递指向函数的指针,并删除指针指向的对象

感谢@jimwise的澄清。我想知道在UML建模时,我是否为参数设置了“in”方向?这是什么意思(语义上)?在“out”的情况下,这意味着什么?还有“inout”和“return”这是什么意思?谢谢你@martinspamer。如果这些人是特定领域的,为什么要通过UML规范编写?我喜欢理解每一个模型的语义,如果我们忽略了这些实现细节,那么我们如何能够从这个模型生成代码呢?理想情况下,您的模型应该保持通用性,您的架构师应该定义一个平台概要文件。该定义表明,在代码生成或往返工程期间,通用语义被转换为特定于平台的语义。我在上面添加了一些链接,应该会有所帮助。不幸的是,这是一个绝对错误的答案,请查看它。