【Rhapsody+SysML学习笔记】2.Count Down
本文最后更新于:2024年3月29日 上午
1 复制项目
打开第一个实例Hello.rpy
,选择“文件”–“另存为”,新建一个文件夹重命名,将项目保存为“CountDown.rpy
”。
2 添加属性
双击“Display”类,选择“属性(Attributes)”标签。
点击“新建”,添加int类型属性Count
设置初始值为0
3 生成代码
保存,然后编辑代码(详细操作见【Rhapsody+SysML学习笔记】1.Hello World - SummerSong’s blog)
- 设置accessor和mutator的可见性(Visibility),可以在浏览器–“Display”类–“属性”–“count”,双击打开或右键“特征”,可见性下拉菜单选择,但是只能改变accessor和mutator的可见性,无法改变数据的可见性。如下图所示:
4 添加操作
右键“Display”类选择“特征”,点击“操作”标签,点击“新建”–“Operation”,修改名称为print。
5 添加参数
双击“print”操作打开特征窗口,选择“参数”标签,添加int类型参数n。
6 添加实现
选择“实现”标签(“print”操作特征),添加代码cout << "Count = " << n << endl;
。
7 再次添加操作
按照第4~6步再次添加print操作,有char*类型参数"s"以及实现:cout << s << endl;
8 添加操作isDone()
添加操作isDone(),返回“bool”型参数,有实现:return (0==count);
。
- 活动代码视图——可以打开活动代码视图显示,活动代码视图会根据模型的改变而自动更新,并且会自动跳转到所选模块对应的代码处。但是会降低模型操作的速度。
- 代码双向传递——这次终于找到如何设置了,“文件”–“项目属性”–“属性”–“查看全部”–“CPP_Roundtrip”–“General”–“RoundtripScheme”,设置为Basic。
我们在活动代码视图中修改display函数,模型中相应地改变。
9 添加状态图
我们准备让Display类以200ms为间隔从10倒数至0。为此我们需要给类添加一些行为,可以通过添加状态图来实现。
右键“Display”类,选择“新增”–“状态图”。
10 绘制状态图
绘制如下状态图
11 编译执行
结果如下图所示:
到现在为止,我们已经实现了目标。但是当我们面对更加复杂的模型时,我们需要验证模型,下面将介绍设计级调试(level debugging)来验证模型,这被称为“动画(Animation)”。
附1 新建配置
打开浏览器,选择“组件”–“Test”–“配置”,展开,按住“Ctrl”键,用鼠标拖动“Release”到配置下,得到一个新配置。
重命名其为“Debug”,设置检测模式为“动画”(“设置”–“监测模式”)。
附2 多配置操作
我们现在有两种配置,需要选择一种使用,有两种方法:
- 在菜单栏选择
- 在相应配置处右键,选择“设置为活动配置”
附3 开始动画
- 点击“转至步骤”按钮,直至出现“Executable is Idle”。
- 此时在浏览器–“包”–“Default”–“类”–“Display”下出现“instance”–“Display[0]”,打开其特征,可以看到count以及被初始化为10。
- 右键“Display[0]”,选择打开实例状态图,可以看到高亮的状态
- 重复点击“转为闲置”或点击“执行”直到“Display[0]”被销毁。
- 退出执行
附4 析构函数
添加析构函数(与添加构造函数一样,详细步骤见【Rhapsody+SysML学习笔记】1.Hello World - SummerSong’s blog),实现为:print("Destroyed");
附5 序列图
浏览器中新增时序图。我们将用它捕获模型执行时发生的情况。
附6 添加实例
拖拽Display类到时序图中,并添加系统边界。
附7 绘制时序图
附8 开始动画
如果存在一个时序图,Rhapsody会基于此创建一个动画时序图。