`

EMF开发指南之Attribute详解

阅读更多
★simple attribute没什么好说的,是最基本的类型,与单值(single value)的java基本类型(int,boolean,String等)相对应
★data type attribute,所有由emf model生成的类型都是由EObject派生的,不过还有一些类不是从EObject派生的,这时候就需要自定义一个Ecore Date Type 和我们要使用的类型对应,在这里定义的data type只是起符号的作用,在使用的时候跟simple data没什么区别,在运行的时候将作为一个实际java类型的代理存在,在emf model中,所有的类型都是EDataType的一个实例,与基本类型不同在于,int,boolean,String是emf model预定义的(java.util.Date也是基本类型,而java.sql.Date不是),对于自定义的data type来说,还存在一个问题,就是序列化(或反序列化)的时候,需要将自定义的类型串行化成string(或反之),默认会调用toString方法,但是emf framework提供了更好的方式,即在package的Factory类中增加了两个方法convertXxxxToString(EDataType eDataType, Object instanceValue) 和createXxxxFromString(EDataType eDataType, String initialValue) ,我们可以替换里面的默认做法使用自己的实现,因此每次增加一个自定义的DataType类型的时候,我们也要在factory中重新实现这两个方法。
★在annotated java中无须定义Data Type接口,emf generator会根据相关attribute在Package和Factory类中添加与EDataType相关的内容。
★enumeration attribute,attribute表示类型、状态的时候一般采用枚举类型属性。因为生成的enumeration 类都有一个private的构造函数,因此可以使用==来比较两个enumeration的异同。同时enumeration还包含一系列int类型的常量来表示每种枚举类型的实际值。
★multi-value attribute 就是对应的get方法返回值是EList(Array)的attribute,如果希望List中的每一个值均唯一,那么需要设置unique为true,一般情况下,我们不使用String[]作为multi-value attribute,这个主要跟notification有关,一般数组只是针对char和byte的情况。
★java.util.List和EList之间的区别是后者多了一个remove()方法
★default value 只有single valued attribute(data type attribute也算一种single valued attribute)才有默认值,默认情况下,boolean是false,数字类型是0,对象类型是null,如果是非string类型的attribute,ecore model将采用factory中的convertStringToXxxx方法将制定的字符串默认值转换成指定的值
★volatile attribute 默认情况下将使用一个field来保存attribute的值,但是volatile类型的属性有些特别,在get的时候它不会采用保存在field中的值而是运行时计算。通常volatile类型的attribute也是non changeable的,因为volitale类型的attribute通常都是通过计算得到,提供setter方法没有 意义,所以在设置volatile为true的时候不要忘了把changeable也设置为false
★non-changeable attribute 默认情况下attribute都是changeable,non-changeable的attribute将不提供setter方法,而对于multi-value attribute属性来说,属性值的内容改变可以通过相应的容器接口来做到,因此setter方法对于multi-value attribute是不会生成的,non-changeable因此对该类属性也是没有意义的
★unsettable attribute 有时候我们希望某个属性处于未设置值的状态,这种状态跟初始化设置的默认值不同(默认情况下,我们会认为属性未设置和属性为默认值两种状态是一样的),当unsettable为ture时,emf generator会追踪指定attribute的设置状态,是未设置,还是已被设置,同时还提供了unsetXxxx()方法来将attribute恢复到未设置状态。对于multi-valued attribute则将unsettable相关的工作交给InternalEList.Unsettable处理,使用unsettable所带来的一个后果就是因为需要相应的属性来保留状态,因此生成的类会比较大。
分享到:
评论

相关推荐

    EMF开发过程整合资料

    EMF(Eclipse Modeling Framework)是Eclipse基金会提供的一款强大的模型化开发框架,主要用于构建基于模型的应用程序。它建立在Java平台上,为开发者提供了一种高效的方法来处理复杂的软件建模任务,支持元数据驱动...

    emf文件格式详解

    **微软EMF文件格式详解.pdf**:这份文档很可能是微软官方或第三方专家提供的关于EMF格式的详细指南。通常,它会涵盖EMF的基本结构、记录类型、图形操作、颜色管理、图元定义等内容。通过阅读这份文档,读者可以了解...

    基于eclipse的EMF插件开发程序详解

    基于Eclipse的EMF插件开发程序详解 在本文中,我们将讨论基于Eclipse的EMF插件开发程序的相关知识点。EMF(Eclipse Modeling Framework)是一种基于Eclipse的模型驱动架构(MDA)工具,用于构建复杂的模型驱动应用...

    微软emf文件格式详解

    ### 微软EMF文件格式详解 #### 一、引言 EMF(Enhanced MetaFile)是一种在Windows操作系统中广泛使用的高级元文件格式。它作为WMF(Windows Metafile)格式的32位增强版,旨在解决WMF在印刷行业中的一些限制。EMF...

    使用EMF开发基于模型的Eclipse插件

    2. **EMF.Edit**:这部分建立在Ecore之上,提供了一组用于查看和修改模型的方法,还包括了一个内置的模型编辑器,使得开发人员可以直接在Eclipse环境中对模型进行操作。 #### EMF的适用场景 EMF非常适合于那些需要...

    Eclipse开发使用GEF和EMF(IBM 红皮书)中英文对照版

    《Eclipse开发使用GEF和EMF》是IBM红皮书系列中的一部经典著作,主要探讨了如何在Eclipse环境中利用GEF(图形编辑框架)和EMF( Eclipse模型框架)进行图形化应用程序的开发。这两项技术是Eclipse平台上的核心组件,...

    eclipse插件开发经验汇总

    此外,本文档还将详细介绍EMF开发指南之Command Framework、Item Provider、Editor、属性详解、Attribute详解、Reference详解、客户端编程等方面的内容。 本文档旨在为读者提供一个详细的eclipse插件开发经验总结,...

    java开发工具EMF插件

    Java开发工具EMF插件是Java开发者在进行模型驱动工程(Model Driven Engineering,MDE)时常用的一个强大工具。EMF(Eclipse Modeling Framework)是Eclipse IDE的一部分,它提供了一种框架和API,用于构建基于模型...

    eclipse插件开发EMF api 文档

    理解并熟练使用EMF API文档对于进行Eclipse插件开发至关重要,它可以帮助开发者构建出高效、可维护的模型驱动应用。通过深入学习和实践,开发者能够掌握模型驱动开发的精髓,提升软件开发的效率和质量。

    EMF 自学笔记5

    在EMF中,模型通常由包(Package)、类(Class)、属性(Attribute)、引用(Reference)等元素组成。模型定义了数据的结构、关系和行为,它是EMF应用的基础。 开发者可以通过XMI(XML Metadata Interchange)或...

    java EMF,图形开发框架。也可用作eclipse的插件开发

    EMF为开发者提供了构建和使用模型化软件的基础设施,使得开发人员可以以模型为中心进行编程,提高代码的可维护性和可复用性。它基于通用建模语言(Unified Modeling Language, UML),但不局限于UML,可以用于创建...

    基于eclipse的EMF插件开发图形化编辑程序

    在本文中,我们将深入探讨如何基于Eclipse的EMF(Eclipse Modeling Framework)插件来开发图形化编辑程序。EMF是Eclipse平台的核心部分,它提供了一套强大的工具和库,用于构建模型驱动的软件应用程序。让我们一起...

    eclipse emf&gef

    EMF的官方文档和相关资源可以在Eclipse官方网站上找到,包括用户指南、开发指南和技术文档等。 ##### 1.2 框架基础 **1.2.1 前提条件** - 必须安装Eclipse IDE。 - 推荐熟悉Java编程语言。 - 对面向对象的设计有...

    emf教程入门和插件

    EMF(Eclipse Modeling Framework)是Eclipse基金会推出的一个开源...通过本教程,你将掌握EMF的基本概念和操作,以及如何利用EMF插件提升开发效率。在实践中不断探索,你将能够自如地运用EMF构建复杂的模型驱动系统。

    emf eclipse

    这些文件可能包含了关于EMF的具体教程或指南: 1. "使用 EMF 进行元建模:生成具体、可重用的 Java 代码片段" 这篇文档可能详细讲解了如何使用EMF的代码生成功能,将元模型转换为可执行的Java代码,实现模型到代码...

    matlab开发-renderTex2Emf

    在MATLAB开发环境中,"renderTex2Emf"是一个实用工具,主要功能是将LaTeX字符串转换成EMF(Enhanced Metafile)格式的图形文件。EMF是一种矢量图形格式,广泛应用于Windows操作系统中,它能保持高质量的图形显示,...

    SVG转EMF的示例代码

    这个示例代码对于理解SVG和EMF之间的转换原理非常有帮助,同时也可以作为开发中实际转换功能的基础。如果你在Windows环境中需要处理SVG图形,并希望在其他应用程序(如Word、PowerPoint)中保持矢量特性,这个转换...

    EMF.rar_emf

    **EMF(Eclipse Modeling Framework)详解** EMF(Eclipse Modeling Framework)是Eclipse基金会下的一个开源项目,主要用于构建基于模型的软件开发环境。它为开发者提供了强大的模型化工具和框架,支持元数据驱动...

Global site tag (gtag.js) - Google Analytics