使用EMF进行元建模:生成具体、可重用的Java代码片段 - 编程入门网
ear, month, date);
result = calendar.get(Calendar.DAY_OF_WEEK);
return result;
}
第一步是填入在上一节最后一步中创建的新 EPackageX 元素下的 3 个必需属性。如果在建模窗口下看不到 Properties 选项卡,可以从上下文菜单中选择 Show Properties View。在这个示例中,我们的包名为 mypackage。 图 5. EPackageX 属性 接下来,向 mypackage 添加一个新 EClassX。可以在 mypackage 突出显示时使用上下文菜单完成此任务。填入 name 属性,为类提供一个名称(比如 MyClass),向新类添加两个 EOperationImpl 元素,并为它们指定方法名 printTimeStampMessage 和 getDayofWeek。然后,向每一个操作添加 Ecore 参数。 图 6. EOperationImpl getDayOfWeek() 图 7. getDayOfWeek() 属性 使用EMF进行元建模:生成具体、可重用的Java代码片段(6)时间:2010-11-03 IBM Ken McNeill上面的操作 printTimestampMessage() 接受一个 EString 类型的参数,而 getDayOfWeek() 接受 3 个 EInt 类型的参数。此外,操作 getDayOfWeek 返回一个 EInt,这可以在 property 属性 EType 下进行配置(参见图 7)。 剖析 EOperationImpl 到现在为止,我们仅使用了继承的 Ecore 元素和属性。现在是时候使用我们扩展的元模型元素来构建 Java 实现了。 LocalVariable 查看一下图 8,printTimestampMessage() 将需要两个 LocalVariable 元素 — 一个为 EString 类型,另一个为 ELong 类型。 图 8. printTimestampMessage() 图 9. LiteralAssignment 在图 9 中,Value 属性的字符串被内联到 LiteralAssignment。您可以设想一个不同的元模型,其中的文字值(常量)被建模为单独的元素。 接下来,我们插入一个 LiteralAssignment 类型的元素,它允许选择一个 LocalVariable 并为其分配值。在本例中,我们选择 String 变量并提供上面的原型方法中的文本值(记住在文本两边加上引号)。 使用EMF进行元建模:生成具体、可重用的Java代码片段(7)时间:2010-11-03 IBM Ken McNeillDataType 再次查看上图,注意,有一个名为 SystemType 的 Ecore DataType,它是 java.lang.System 的一个包装器。必须将其添加到我们的 mypackage 包,因为它将会被随后的 Invoke 元素引用。 Statement 添加到这个操作的第一个 Statement 是 SystemType 中的静态方法 currentTimeMillis() 的一个 Invoke,已经在上面定义了。 图 10. 调用 currentTimeMillis() 属性 根据我们的元模型(我们将在下一节提供代码模板),上面的 Invoke 将转换为 Java 语句:timestamp = java.lang.System.currentTimeMillis();。 下一个 Invoke 与之前的那个稍有不同。首先,没有 Assignment。其次,我们将把 message 参数的引用作为 Args 属性的一个参数。 图 11. 调用 out.print 属性 操作中的第 3 个(最后一个)Invoke 是一个使用 LocalVariabletimestamp 作为单个参数的 println()。这就完成了具体操作 printTimestampMessage() 的建模。 让我们看看第二个 EOperationImplgetDayOfWeek() 的完整模型。 图 12. getDayOfWeek() DataTypes 在模型的底部,我们创建了一个额外的 DataType,名为 CalendarType,这是该操作所必需的。 LocalVariables 在操作模型的 3 个 LocalVariable 中,我们主要关注称为 result 的 LocalVariable,因为它将会保存执行完操作的最后一条语句之后返回的值。在 EOperationImpl 属性中有一个名为 Return Ref 的属性,而且在我们的实现中,我们使用下拉菜单选择 LocalVariable 结果。 使用EMF进行元建模:生成具体、可重用的Java代码片段(8)时间:2010-11-03 IBM Ken McNeillStatement 正如图 12 所示 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |