EMF:Ecore模型
在MDSF:特定领域建模 DSM(Domain Specific)介绍中提到过Ecore是EMF的元元模型,要使用Eclipse来做DSL,则必须先大致了解一下Ecore,本篇将对Ecore进行概要的描述。
简单的Ecore元模型子集
Ecore本身是一个简单的小的UML子集
- EClass:领域类,它有名称,一个或多个属性,一个或多个引用
- EAttribute:领域类的属性,属性有一个名称和类型
- EReference:在领域类之间建立的关联,有一个名称,一个布尔值标识是否包含,还有一个引用指向的目标类
- EDataType:属性类型,例如int或者对象类型
Ecore模型示例
- 类图
- 对应的Ecore模型
Ecore模型类继承关系
- EObject
EMF的每个模型对象EObject都是Notifier,它维护了一个Adapter列表,可以把Adapter作为监听器加入到模型的这个列表中。org.eclipse.emf.common.notify.Adapter接口由EditPart实现。
Ecore structural features
欢迎转载,转载请注明:转载自周金根 [ http://zhoujg.cnblogs.com/ ]
MDSF
MDSF:Web数据应用模型语言【WebML】介绍
posted @ 2011-06-07 11:05 周 金根 阅读(1796) | 评论 (2) 编辑
MDSF:在线查看【模型驱动软件工厂】文章汇总
posted @ 2011-03-17 23:12 周 金根 阅读(2524) | 评论 (0) 编辑
MDSF:SoftFluent敏捷模型驱动开发介绍
posted @ 2011-03-17 17:01 周 金根 阅读(1846) | 评论 (4) 编辑
GMF:OCL(Object Constraint Language)介绍
posted @ 2010-12-21 09:48 周 金根 阅读(1748) | 评论 (0) 编辑
MDSF:如何使用GMF来做TOGAF建模工具
posted @ 2010-11-22 09:36 周 金根 阅读(1631) | 评论 (1) 编辑
MDSF:Eclipse MDD Day学习
posted @ 2010-11-16 12:05 周 金根 阅读(1546) | 评论 (2) 编辑
MDSF:架构工具简要功能说明
posted @ 2010-11-03 17:01 周 金根 阅读(1726) | 评论 (5) 编辑
GEF:应用示例列表
posted @ 2010-11-03 16:56 周 金根 阅读(487) | 评论 (0) 编辑
GMF:图形定义模型(Graphical definition model)介绍
posted @ 2010-10-29 09:35 周 金根 阅读(1591) | 评论 (1) 编辑
GEF(Graphical Editing Framework)介绍
posted @ 2010-10-27 08:36 周 金根 阅读(2336) | 评论 (2) 编辑
GMF:示例Mindmap 练习一
posted @ 2010-10-26 14:18 周 金根 阅读(1842) | 评论 (1) 编辑
GMP:了解GMF引擎功能(Graphical Modeling Framework)
posted @ 2010-10-26 10:13 周 金根 阅读(1655) | 评论 (1) 编辑
EMF:Ecore模型
posted @ 2010-10-20 16:43 周 金根 阅读(1726) | 评论 (2) 编辑
MDSF:LOP-使用MPS来做个计算器的示例
posted @ 2010-10-13 11:11 周 金根 阅读(1109) | 评论 (2) 编辑
MDSF:访谈Mendix研发负责人Johan den Haan
posted @ 2010-10-13 10:08 周 金根 阅读(1221) | 评论 (4) 编辑
MDSF:代码生成 VS 模型解释
posted @ 2010-10-12 10:24 周 金根 阅读(1939) | 评论 (12) 编辑
MDSF:面向语言编程LOP(Language Oriented Programming)方法介绍
posted @ 2010-09-30 12:33 周 金根 阅读(1843) | 评论 (2) 编辑
MDSF:产生式编程(Generative Programming)方法介绍
posted @ 2010-09-28 23:37 周 金根 阅读(1613) | 评论 (4) 编辑
MDSF:代码生成(Code Generation)介绍
posted @ 2010-09-27 21:52 周 金根 阅读(2753) | 评论 (7) 编辑
MDSF:DSL(Domain Specific Language)介绍
posted @ 2010-09-26 18:21 周 金根 阅读(3022) | 评论 (6) 编辑
MDSF:软件工厂(Software factory)介绍
posted @ 2010-09-25 13:36 周 金根 阅读(2572) | 评论 (2) 编辑
MDSF:模型驱动开发(MDD)介绍
posted @ 2010-09-20 11:22 周 金根 阅读(3871) | 评论 (18) 编辑
MDSF:特定领域建模 DSM(Domain Specific)介绍
posted @ 2010-09-17 11:07 周 金根 阅读(2003) | 评论 (4) 编辑
MetaModelEngine:元模型引擎开发思路
posted @ 2010-07-28 11:50 周 金根 阅读(2020) | 评论 (2) 编辑
DSM:使用MetaEdit+编写Family Tree Modeling Language
posted @ 2010-07-27 16:36 周 金根 阅读(1863) | 评论 (0) 编辑
读书笔记:Visual Studio DSL工具特定领域开发指南
posted @ 2010-07-26 10:55 周 金根 阅读(2742) | 评论 (2) 编辑
DSL的演进(转 infoQ)
posted @ 2010-05-19 13:39 周 金根 阅读(766) | 评论 (0) 编辑
模型驱动开发 - 产品线架构的演进
posted @ 2010-01-26 22:00 周 金根 阅读(1425) | 评论 (5) 编辑
MDSF:Mendix介绍
posted @ 2010-01-19 20:22 周 金根 阅读(1833) | 评论 (8) 编辑
软件工厂方法(二):软件工厂应用
posted @ 2009-08-03 21:02 周 金根 阅读(2624) | 评论 (4) 编辑
DSL应用的优点
posted @ 2009-01-11 13:59 周 金根 阅读(386) | 评论 (0) 编辑
Viewpoints 1.0 for Visual Studio .NET 2008
posted @ 2009-01-08 21:49 周 金根 阅读(299) | 评论 (0) 编辑
EMF介绍系列(一、EMF与MDA)
接触Eclipse一段时间的朋友应该都听说过EMF这个名字,EMF是Eclipse Modeling Framework的缩写,它是Eclipse的一个重要的子项目,如果翻译成中文就是“Eclipse建模框架”。其实只从这个名字还真是难以确定它的 作用是什么,我认为要完全掌握EMF应该对模型驱动开发(MDA)有一定的了解,而EMF可以看作是Eclipse上的MDA一个实现(代码生成是MDA 的重要组成部分之一),它能够生成在Eclipse上执行的代码。可惜我对MDA没有系统研究过,对EMF的应用大多是为了减少模型修改带来的影响,所以 也希望EMF能带我进入MDA的世界。
MDA讲究的是把模型和应用系统实现分开,模型是最重要的部分,可以说有了清楚的模型,就完成了一半的工作。模型是由元模型(Meta Model)定义的,例如UML里“类”和“属性”这些概念是在UML的元模型里定义的,而元模型又是由“元元模型”来定义,后者多是自描述的,也就是能 够自己定义自己,所以很少见到“元元元模型”的概念。在MOF规范里, 元元模型处于M3层,元模型处于M2层,往下的M1层是模型,而M0层是实例。EMF定义了一套Ecore元模型,该模型是EMOF(MOF的一个子集, MOF是Meta-Object Facility的缩写)的一个实现,这是一个自描述的模型,可以认为它处于MOF中的M2层,即与UML元模型相同的位置。用Ecore元模型可以定义 ecore模型,也就是.ecore文件,这个模型处于M1层,而ecore模型的实例处于M0层。关于MOF的更多概念请参考MOF规范和相关文档, MDA的各种概念是相当多的,研究它的人也很多,我认为EMF算是比较务实的一派。如果以后有机会深入研究Ecore元模型,我也会把心得写在这里供大家 参考。
EMF自发布以来一直受到Eclipse社区的热情拥护,目前很多Eclipse的子项目都是基于它开发的,可见EMF确实能给开发者带来好处。随着EMF的成长,出现了越来越多的文档,在eclipse.org/emf上就可以找到不少,最全面和权威的当属这本Eclipse Modeling Framework A Developers Guide, 完整的讲解了EMF,虽然针对的版本较早,但绝大部分内容还是适用的;作为入门读物,网站上Documents里列出的一些教程也是不错的选择;EMF的 新闻组更是一个很好的交流场所,Ed Merks(EMF设计师之一)和其它几位开发人员可以说是有问必答,感谢他们的认真态度。
通过在一些项目里使用EMF,我也逐渐感觉了到它起到的作用,特别是当模型里各种元素和关系比较多时,EMF的代码生成功能会节省不少工作量,对于 我们开发人员来讲,这不就是最大的好处吗。其实用EMF构造一个应用的步骤很简单:1、构造模型,2、生成代码,前者可以通过UML类图、Java接口、 XML Schema等多种方式定义,后者可以选择只生成模型部分的代码,也可以同时生成编辑器部分的代码,对这个编辑器做一些定制就可以得到符合需求的应用程 序。
类图可以帮助我们直观的了解应用系统里各对象的关系,但在开发过程中,类图里的定义很可能被修改,如果这一修改没有及时反映回类图,类图就会逐渐变 得不准确而失去作用。但是保持代码和类图的一致是一件很烦琐的工作,有时由于项目管理的需要,类图又必须保证能够反映系统的真实结构。比较好的解决方法是 让代码由类图直接生成,模型需要修改时也在类图上做改动,并且重新生成代码,这正是EMF的专长。
说了这么多,你可能还是没弄明白EMF到底能为我们带来哪些好处,是怎样为我们节省工作量的,从下个帖子开始我们将一步步了解怎样使用EMF构造应用程序。因为是边用边写,所以这个系列的帖子都不会太长,相信后面部分会以心得和技巧等内容为主。
本文地址:http://www.cnblogs.com/bjzhanghao/archive/2005/11/12/275024.html