当前位置:网站首页>EA&UML日拱一卒-活动图::Variable Actions(续)
EA&UML日拱一卒-活动图::Variable Actions(续)
2022-07-29 13:41:00 【51CTO】
在开始今天的说明之前,先来补齐最后一点知识。
15.7.25 Variable [Class](变量)
15.7.25.1 Description(描述)
A Variable is a ConnectableElement that may store values during the execution of an Activity. Reading and writing the values of a Variable provides an alternative means for passing data than the use of ObjectFlows. A Variable may be owned directly by an Activity, in which case it is accessible from anywhere within that activity, or it may be owned by a StructuredActivityNode, in which case it is only accessible within that node.
变量是一种可连接元素,它可以在活动执行期间储存值。读写变量的值提供了除对象流以外的另一种传送数据的手段。变量可以直接被活动所拥有,这种情况下它可以在活动内部的任何地方被访问,它也可以被结构化活动节点所拥有,这时它只可以在该节点内部被访问。
这段话说明了什么呢?至少有以下几点:
- 变量是存储值的容器而不是值本身
- 如果我们把活动看作一个方法(或函数)那么这里的变量就是C/C++语言的局部变量(约等于吧)
- 通过变量传递值是数据流的代替手段。
回到今天的主题,首先是抽象语法部分,也就是下面这张图。
从图中应该可以(但不限于)读到以下信息:
- 图中有三个抽象Action类:Action,VariableAction和WriteVariableAction
- 图中有四个具象Action类:ReadVariableAction,AddVariableValueAction,RemoveVariableValueAction和ClearVarialeAction
- 所有的VariableAction都和一个Variable相关联
- ReadVariableAction有一个输出引脚
- 所有的WriteVariableAction有[0..1]个value输入引脚
- AddVariableValueAction有[0..1]个insertAt输入引脚
- AddVariableValueAction有[0..1]个removeAt输入引脚
- ClearVariableAction没有引脚
四个抽象类不会在实际应用中使用,所以这里只说明四个具象类。
Read Variable Actions(读变量动作)
读 变量动作就是将变量中的值取出来放到result输出引脚生成的对象令牌中,如果读不到值,就生成空令牌。另外一个就是变量的多重度要和引脚的多重度兼 容,说白了就是引脚要装得下变量中的值,也就是说引脚的多重度下限要小于等于变量的多重度下限,而引脚的多重度上限要大于等于变量的多重度上限。假设变量 的多重度为2..5,如果引脚的多重度如果是1..6,或者2..5就没有问题,如果引脚的多重度为2..4,3..4都是不可以的。
Add Variable Value Action(增加变量值动作)
首先增加变量值动作每次只增加一个值,这个值通过value输入引脚指定。如果这个值已经在变量中存在,那本次操作对变量没有影响。
增加变量值操有有一个选项isReplaceAll,用来控制增加新值时,之前保存在变量中的值如何处理。
当isReplaceAll为真时会清除之前保存在变量中的所有值,这时增加变量值操作实际上是一个替换操作。
当isReplaceAll为假时,就意味着随着增加变量动作的进行,变量中保存的值会逐渐增加。如果变量是无序的,就不用在意值的位置,随便丢进去就可以了;如果变量是有序的就需用通过insertAt引脚提供一个指定插入位置的整数。
如果向变量插入一个已经存在的值,这时增加变量值动作相当于移动变量值动作。
Remove Variable Value Actions(移除变量值动作)
和增加变量值动作类似,移除变量值也是每次操作一个值。
移 除变量值操作有一个选项:isRemoveDuplicates,用于表明是否要从变量中移除重复值。如果isRemoveDuplicates为假,而 且变量是有序的,那么就通过removeAt引脚取得移除对象的位置然后变量中移除该位置的值;其他的情况下,value引脚有效并提供作为操作对象的 值。变量中所有与之相同的值都会被移除。
Clear Variable Actions(清除变量动作)
清除变量动作移除变量的所有变量值。
注意
需要注意的是,这里提到的有序并不是常说的升序/降序排序是的顺序,只是说值可以通过索引访问,换句话说就是数组。详细信息可以参照另一篇文章: EA&UML日拱一卒-Types and Multiplicity。
参考资料:
《OMG Unified Modeling Language TM (OMG UML) Version 2.5》
URL:http://www.omg.org/spec/UML/2.5
阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】
边栏推荐
- Understand the yolov7 network structure
- Nine kinds of way, teach you to read the resources files in the directory path
- 中国电信首发全新加密通话产品!有效防止网络监听
- app小程序开发的营销优势有什么?
- How to set the explosion rate of legendary humanoid?Humanoid increase tutorial
- 九种方式,教你读取 resources 目录下的文件路径
- 用支持LaTex的Markdown语句编辑一个数学公式
- [Numpy] 创建数组
- TCP和UDP的基本认识
- Gdb debugging common concepts finishing
猜你喜欢
随机推荐
从零开发一款相机APP, Day03: Camera 常用api和最新框架介绍
PAT 甲级 A1021 Deepest Root
你真的会用Console.log吗?
了解 AQS 底层原理
1192. 奖金
开放式耳机推荐哪款最好最实用、最好的开放式耳机推荐
Create and copy conda environment
中国电信首发全新加密通话产品!有效防止网络监听
iMedicalLIS监听程序(1)
IJCAI 2022 outstanding papers published, China won two draft in 298 the first author
带你了解一下PHP搭建的电商商城系统
何为擦除机制,泛型的上界?
验证二叉树的前序序列化[抽象前序遍历]
grid的使用
企业如何走出固定资产管理的困境?
The key to cracking AI full-process development problems
Hash table implementation code
[Numpy] np.where
PyQt5快速开发与实战 7.1 信号与槽介绍
MySQL8.0学习记录21 - 视图