Eclipse使用入门教程.docVIP

  • 8
  • 0
  • 约2.52万字
  • 约 27页
  • 2021-10-29 发布于四川
  • 举报
EMF概述 文档原出处: 最后修改时间: 2005年6月16日 ? 本文为EMF及其代码生成模式提供了一个基本的概述。要了解EMF所有功能的详细描述,请参见《Eclipse Modeling Framework》(Addison Wesley, 2003),或者框架自身的Javadoc文档。 概论 EMF是一个Java框架与代码生成机制,用来构建基于结构化模型的工具或其它应用系统。它们可以带给你面向对象建模的思想,EMF帮助你快速地将你的模型转变为高效的、正确的、以及易用的定制Java代码,只需要一个很低的入门成本,EMF就可以为你提供这些益处。 那么,当我说“模型”时到底意味着什么?当谈论模型时,我们一般都会想到类图、协作图、状态类,等等。UML为这些图定义了标准的符号。联合使用各种UML图,可以详细说明一个应用系统的完整模型。这个模型可能纯粹只用作文档,或者通过适当的工具,它可以被用来作为输入内容生成一部分或全部应用系统代码。 要能够做到这些的建模工作一般都需要昂贵的面向对象的分析与设计工具(OOA/D),你可能对我们的结论有疑问,但是,EMF提供了一个低成本的入口。我们说这个的理由是一个EMF模型只需要你拥有在UML中建模所需知识的一小部分即可,主要是简单的类的定义,以及它们的属性与关系,针对这些,不需要使用一个全尺寸的图形化建模工具。 EMF使用XMI作为模型定义的规范形式,你有多种方法可以得到这种格式的模型: ???????????? 直接使用XML或文本编辑器来创建XMI文档。 ???????????? 从建模工具,如Rose,中导出XMI文档。 ???????????? 带有模型属性的注解Java接口。 ???????????? 描述模型序列化格式的XML Schema。 第一种方法最直接,但一般只对XML高手有吸引力。若你已经使用了全尺寸的建模工具,则第二种方法是最可取的。第三种方法只需要有一个基本的Java开发环境就可以低成本地拥有EMF带来的好处、以及它的代码生成能力。在创建一个需要读写特定的XML文件格式的应用系统时,最后一种方法最适合。 一旦你指定一个EMF模型,EMF生成器就可以创建一个一致的Java实现类的集合,你可以编辑生成的类来添加方法与实例变量,只要需要还可以重新从模型中生成代码:你添加的部分在重新生成过程中都将被保留。若你添加的代码依赖于你在模型中修改的某些东西,你还需要更新代码来反映这些改变,其它情况下,你的代码是完全不受模型修改与重新生成的影响的。 另外,通过以下方法,就可以简单地提高你的生产力:使用EMF提供的几个其它的益处,如模型变动通知、持久化支持(包括默认的XMI、以及基于Schema的XML序列化),模型校验框架,以及非常有效的用来操纵EMF对象的反射API。最重要的是,EMF提供了与其它基于EMF的工具或应用进行互操作的基础。 EMF包括两个基本的框架,core框架与EMF.Edit。core框架通过为模型创建实现类,提供基本的代码生成与运行时支持。EMF.Edit基于core构建并进行了扩展,添加了对生成适配器类的支持,可以支持视图以及基于命令的(可以undo的)模型编辑操作。下面的章节描述core框架的主要功能。EMF.Edit将在另一篇文章中进行描述“The EMF.Edit Framework Overview”。指南“Generatin an EMF Model”详细介绍了如何运行EMF与EMF.Edit生成器。 ? EMF与OMG MOF的关系 如果你已经熟悉OMG的MOF,你肯定会困惑于EMF倒底与MOF有什么关系。实际上,EMF就是从作为MOF规范的一个实现开始的,通过实现大量使用EMF的工具积累的经验,我们又对它进行了发展。EMF可以被看作对于MOF的部分核心API的一个高效的Java实现。然而,为避免任何混淆,与MOF核心元模型类似的部分在EMF中称为Ecore。 在MOF2.0计划中,MOF模型的一个类似子集,称为(EMOF,Essential MOF),也被分离了出来。在Ecore与EMOF间只存在微小的,大部分是命名上的区别;无论如何,EMF都可以透明地读写EMOF的序列化存储。 ? 定义一个EMF模型 为了有助于描述EMF,我们假定拥有一个简单的、只包含一个类的模型,如下图: 模型中展示了一个拥有两个属性的类:String类型的title,int类型的pages。 我们的如上图这么简单的模型定义,可以通过几种不同的方式提供给EMF代码生成器。 UML 若你拥有与EMF一起工作的建模工具,你可以简单地画出如上图所示的模型。 XMI 另外,我们可以直接用XMI文档来描述这个模型,就像下面所示: ecore:EPackage xmi:version=

文档评论(0)

1亿VIP精品文档

相关文档