我可以使用Eclipse-EMF的内部数据结构吗?

问题描述:

在EMF中,用户可以绘制UML图,并且可以将UML模型转换为Java代码。据我所知,EMF有自己的内部数据结构来捕捉用户绘制的UML模型。而我想要做的是通过编码来制作UML模型,而不是通过绘制,即通过使用表示UML元模型(类,包,属性等)的EMF内部数据结构。像,我可以使用Eclipse-EMF的内部数据结构吗?

UmlClass myClass = new UmlClass(); 
UmlAttribute myAttr = new UmlAttribute(); 
myClass.addAttribute(myAttr); 

这是可能的(甚至没有EMF)?无论如何,我想要使用完全反映OMG标准UML规范的健壮数据结构。

在此先感谢。

EMF是一个建模框架,旨在支持造型一般,而不仅仅是UML。

如果是UML,尤其是你之后,确实有这样一个基于EMF的实现。检出UML2

没有完全反映OMG规范的类,但EMF ECore是模型的元模型。因此,您可以使用EMF ECore执行您想要的操作。有很多文档在http://www.eclipse.org/modeling/emf/docs/#overviews和一本很好的书。该链接有一本图片和链接到这本书。

一个例子:

EcoreFactory ecoreFactory = EcoreFactory.eINSTANCE; 
EClass myClass = ecoreFactory.createEClass(); 
myClass.setName("MyClass"); 
EAttribute myAttr = ECoreFactory.createEAttribute(); 
myAttr.setName("myAttr"); 
myAttr.setEType(EcorePackage.Literals.ESTRING); 
myClass.getEStructuralFeatures().add(myAttr);