【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会基于此创建一个动画时序图。


【Rhapsody+SysML学习笔记】2.Count Down
https://summersong.top/post/5a98b099.html
作者
SummerSong
发布于
2023年7月25日
更新于
2024年3月29日
许可协议