EA&UML日拱一卒-活动图::ReadSelfAction和ReadStructuralFeatureAction

来源:互联网 发布:校园网络连接ip网关 编辑:程序博客网 时间:2024/05/29 04:40

上一篇文章中介绍了AcceptCallAction和ReplyAction两个动作。今天介绍另外两个动作:ReadSelfAction和ReadStructualFeatureAction。


首先介绍《GB/T 28174.2-2011 统一建模语言(UML) 第2部分:上层结构》中对这两个动作的描述。为了更容易理解,内容稍作修改。


读自身动作(ReadSelfAction)


ReadSelfAction 是一个动作,该动作读取动作的宿主对象。每个动作最终都是某个行为的一部分。行为按照一个类目的规范,以某种方式被附属到一个方法的实体上,当行为执行 时,该动作在类目的某一个指定的宿主对象的语境中起作用。ReadSelfAction取得这个宿主对象,将它放到输出引脚上。


读结构性特征动作(ReadStructuralFeatureAction)


ReadStructuralFeatureAction是一个获取结性特征值的动作。

它有一个输入引脚,用于指定输入对象。当输入对象被指定以后,该对象的结构性特性的值被放置在动作的输出引脚上。输出引脚的类型,有序性,多重性都应与结构性特征相适合。


示例


继续使用解一元二次方程的例子。首先看类图。


CalculateCoordinator 管理着Calculator和CalculatorPanel的实例,在calculateMain方法中首先调用CalculatorPanel的 getInput方法取得一元二次方程的a,b,c三个系数,然后调用Calculator的solveEquation方法解方程。今天首先索命取得 calculator对象和panel对象的方法。


准备工作


  1. 创建名称为CalculateCoordinator::calcuateMain的活动图

  2. 增加初始节点

  3. 增加AcceptCallAction并指定Trigger为CalcuateCoordinator.calculateMain。具体步骤请参照上一篇文章。

增加ReadSelfAction,ReadStructuralFeatureAction


从工具栏拖动Action图标到流程图,选择Action类型为ReadSelf

指定Action名称为coordinator

右键打开ReadSelfAction的上下菜单并选择【Structural Elements】,在出现的对话框中选择result引脚后调整位置

用控制流连接AcceptCallAction和ReadSelfAction

从工具栏拖动Action图标到流程图,选择Action类型为ReadStructuralFeature

指定Action名称为CalculateCoordinator

修改名称为result的输出引脚,指定名称为calculator,选择类型为Calculator

增加一个名称为panel,类型为CalculatorPanel的输出引脚。

右键打开ReadStructuralFeatureAction的上下菜单并选择【Structural Elements】,在出现的对话框中选择表示所有引脚后调整位置。

连接ReadSelfAction的输出引脚到ReadStructuralAction的输入引脚object.


解说


ReadSelfAction 是一个动作,该动作读取CalculateCoordinator::calculateMain的宿主对象。当行为执行时,该动作在 CalculateCoordinator类的某一个宿主对象的语境中起作用。ReadSelfAction取得这个宿主对象,将它放到输出引脚上。看懂 没?ReadSelfAction的功能相当于C++中的this指针!


本例中 ReadStructuralFeatureAction的输入引脚指定了ReadSelfAction取得的CalculateCoordinator 的一个实例,这时该对象的结构性特性的值calculator:Calculator和panel:CalculateorPanel被放置在该动作的输 出引脚上。输出引脚的类型,有序性,多重性都应与结构性特征相适合。还是以C++举例,ReadStructuralFeatureAction的功能其实就是输入对象,输出对象的数据成员!


下一篇文章介绍使用得到的calculator和panel实例调用其功能的的表达方法。


以上就是今天的文章,欢迎点赞并推荐给您的朋友!
阅读更多更新文章,请扫描下面二维码,关注公众号【面向对象思考】

原创粉丝点击