快速业务通道

使用EMF进行元建模:生成具体、可重用的Java代码片段 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
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 McNeill

DataType

再次查看上图,注意,有一个名为 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 McNeill

Statement

正如图 12 所示

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号