对于活动或反应文件,IBM® Rational® Rhapsody® 会生成使用活动或反应功能的公用、隐式对象(单例)。该单例的名称即是文件的名称。
对于具有 Constant 修饰符的变量,Rhapsody 将生成 #define
语句。例如:
#define MAX 66
下表列示对象代码生成与文件代码生成的区别。
| 模型元素 | 文件代码 | 对象代码 |
|---|---|---|
| 数据成员(特性、关联或对象) | 全局变量 | 单实例 struct 中的成员 |
| 函数名:可以使用 <lang>_CG::Operation::PublicName 和 <lang>_CG::Operation::PrivateName 属性来配置函数的名称模式(对于文件、对象和其他元素)。 | 函数名模式是 <Function>。 | 公用函数的名称模式是 <Singleton>_<function>。 私有函数的模式是 <Function>。 |
| 函数特征符 | 为了与框架回调函数的特征符相符(对于反应行为),将在有需要时生成 me自变量。 | 相同。 |
| 初始化 | 直接在定义中初始化变量和关联。例如:
int x=5; 在生成的 Init 函数中初始化对象。 |
在初始化函数中完成此任务。 |
| 类型名称 | 类型的名称模式是 <Type>(与可视性无关)。 | 公用类型的名称模式是 <Singleton>_type。 私有函数的名称模式是 <Type>。 可以使用 <lang>_CG::Type::PublicName 和 PrivateName 属性来配置名称模式。 |
| 可视性 | 在规范 (.h) 文件中将公用成员声明为
extern,并在实现 (.c)
文件中定义此成员。 例如: extern int volume; 在实现文件中,将私有成员声明并定义为 static。 例如: static int volume; |
忽略成员可视性;可视性是 struct 的可视性的结果。 例如: struct Ob_t { |
| 自动生成 | ||
| 初始化和清除 | 在初始化方法中,只进行算法初始化(创建部件;初始化链接、行为和动画)。 仅当有需要时,才创建初始化方法和清理方法。 初始化函数的名称是 <file>_Init;清理函数是 <file>_Cleanup。 |
任何初始化都在 Init
方法中进行。 在缺省情况下,将生成 Init 和 Cleanup 方法。 |
| 框架数据成员 | Rational Rhapsody 将生成仅用于存放框架成员的指定 struct
以及名为 <file> 的单一 struct
实例。struct 名称是 <file>_t。 例如: struct Motor_t
{ |
框架成员作为对象 struct 声明的组成部分生成。 |
| 调用框架操作 | 对文件执行的框架操作是使用该文件来调用的。 例如: CGEN(Motor, ev()); |
对单实例执行的框架操作是通过传递该单实例来调用的。 例如: CGEN(Motor,ev()); |
| 状态图数据成员 | 状态图数据成员是作为生成的结构的特性而生成的。 例如: struct
F_t { |
状态图数据成员作为 struct 的组成部分生成。 |
| 状态图函数名 | 公用状态图函数将使用前缀 <file>_
来生成。 例如: myFile_sIN() |
请使用与任何其他操作相同的命名约定。 |
可以使用 <lang>_CG::Operation::PublicName 和 PrivateName 属性来配置函数的名称模式(对于文件、对象和其他元素)。