快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

优乐国际平台发布网站:EMF介绍系列(二、从模型生成应用程序)



照样从一个例子里看看EMF的应用措施和感化吧。假设我们的利用是一个网上市廛,在系统里有这些工具:市廛Shop、种别Category、商品优乐国际平台发布网站Product,此中种别可以包孕子种别。现在我们用EMF从头到尾天生一个可以治理种别和商品的利用法度榜样。假如你的Eclipse里还没有安装 EMF,在eclipse.org/emf下载得当你Eclipse版本的EMF SDK,建议你下载整个包孕的那种。安装后,在新建对话框里会增添EMF的种别,如图1所示:

图1 新建领导里的EMF种别

此中“EMF Model”是从已有的模型文件创建genmodel模型,这个模型是专门用来天生代码的;假如你手里已经有一个模型(比如一个.mdl文件或是一个.xsd文件等等),可以选择新建“EMF Project”,这样在领导的后面部分里会要求供给已有的模型文件;由于我们盘算自己从头开始建立这样的模型,以是选择“Empty EMF Project”,和建立通俗插件一样,要供给一个插件名称,我们为这个市廛项目起名为com.my.shop,然后按Finish即完成领导。今朝这个新建立的项目里还没有包孕任何代码,只是在META-INF/MANIFEST.MF文件里定义了对EMF相关插件的依附。

下面开始定义ecore模型,我对照爱好图形化的要领,由于看起来很直不雅,以是我应用Omondo公司的EclipseUML插件来画类图,这个插件的免费版本在 它们网站下载,留意下载得当你的Eclipse的版本。当然rose也不错而且加倍稳定,但它不是免费的,而且只能在Windows里应用。和Rose不合,EclipseUML对EMF有特其余支持,安装这个插件后,我就们可以在项目里新建一个“EMF Class Diagram”,这样会同时创建一个.ecd文件和一个.ecore文件,EclipseUML编辑的类图信息会保存在这两个文件里,前者主如果图形方面的内容,而后者是真正的模型信息,留意这两个文件中的任何一个都不要搞丢了,最好能常常备份一下。

在EclipseUML里编辑类图很简单,必优乐国际平台发布网站要留意的是,两个工具之间假如有关联,要仔细斟酌关联是否为“包孕”关系(一样平常在UML中以玄色菱形表示),假如一优乐国际平台发布网站个类没有包孕在任何其它类里,则这个类的实例不会被保存到文件。例如图2中Category包孕在Shop中,Product包孕在 Category中。这样,所有的工具都直接或间接的被Shop工具包孕。换句话说,假如以Shop作为“根”,所有的工具都可以被保存到文件里。

EMF对java基础类型和一些常用类做了包装,例如int->EInt,java.lang.Integer->EInteger以及java.util.List->EList等等,以是在定义类的属性时要应用这些EMF的类型,当然也有法子应用自定义类型(今后会用到)。我们例子里的模型相称简单,一共只有三种营业工具(为了加倍直不雅,我们增添了一个NamedElement接口),现在网上市廛类图的第一个版本如图2所示。

图2 网上市廛类图(版本1.0)

接下来就要天生代码了。EMF应用JET使用模板天生代码(前面曾先容过JET),以是要把ecore模型转换为可以被JET使用的genmodel模型,详细的操作是按 ctrl+n新建一个EMF Model,在这个领导的第一步指定名称shop.genmodel,第二步选择从ecore模型导入,第三步选择ecore优乐国际平台发布网站模型文件(shop.ecore),这样就建立了缺省的genmodel模型,在这个模型的根基上还可以做一些定制事情,例如每个属性的描述信息等等。

有了genmodel模型,离获得可用的java代码就只有一步之遥了。打开shop.genmodel文件,在根节点上点开右键菜单(见图3),假如只想天生模型代码选择“Generate Model Code”,假如必要.edit的代码(EMF供给的一些ItemProvider和AdapterFactory,赞助实现编辑器)和可用的编辑器,选择“Generate All”最方便,这也是例子里选择的要领。EMF的代码天生器为模型、.edit、编辑器和测试代码各天生一个插件项目(com.my.shop/shop.edit/shop.editor/shop.tests),前三个是后者依附前者的关系。这里插上一句,纵然没有用EMF的项目,也建议把模型和界面应用不合的插件项目分开,这样做有很多好处,主如果机动性大年夜大年夜前进了。

图3 从菜优乐国际平台发布网站单里选择天生部分或整个代码

现在可以运行起来看看效果了,留意我们以致连一句代码也没有写呢。EMF为我们天生了一个新建领导(New Wizard),使用这个领导可以天生新的Shop实例,留意在第三步要选择以Shop类为根类型。编辑器的运行界面如图4所示,它的外不雅虽然有待改进,但功能已经足够我们对网上市廛里的种别和产品进行编辑了。在今后的帖子里,我们要对网上市廛的ecore模型和编辑器的界面做一些改动。

图4 缺省的编辑器界面

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: