仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1457|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA网页设计EMF-Ecore模子创立

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:50:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,core|创立
1包界说

1.1UML体例:

a)界说:

i.图:





ii.天生代码:

publicinterfaceStPackageextendsEPackage{

StringeNAME="st";

StringeNS_URI="http://st";

StringeNS_PREFIX="st";



}



1.2Java体例:

a)界说:

i.代码:

publicinterfacestPackage{

publicStringeName="st";

publicStringeNS_URI="http://st";

publicStringeNS_PREFIX="st";

}

申明:interface声明中不克不及带“@model”标志,接口称号要以“Package”开头。接

口能够声明以下三个字段eName,eNS_URI,eNS_PREFIX。





1.3XML体例

a)界说:

i.代码:

<xsd:schemaxmlns:xsd=http://www.w3.org/2001/XMLSchema

targetNamespace=http://st

xmlns:st="http://st">

</xsd:schema>

申明:nsURI的值由targeNamespace指定。nsPrefix的值由targetNamespace导出。

name是targetNamespace的最初一段。



2类界说

2.1UML体例

a)界说:

i.图:



ii.天生代码:

publicclassTeacherImplextendsEObjectImplimplementsTeacher{



}



b)接口:

i.申明:假如把类的stereotype设置为<<interface>>,则EMF将使天生的EClass的interface字段设为true,但在EMF2.1.0的测试版中,EMF其实不能辨认出这个<<interface>>范例。



c)笼统类:

i.图:



ii.天生代码:

publicabstractclassTeacherImplextendsEObjectImplimplementsTeacher{



}



d)单承继:

i.图:



ii.天生代码:

publicclassJavaTeacherImplextendsTeacherImplimplementsJavaTeacher{



}





e)多承继

i.图:



ii.天生代码:

publicinterfaceJavaTeacherextendsTeacher,Nothing,Java{

}



publicclassJavaTeacherImplextendsTeacherImplimplementsJavaTeacher{



}



2.2Java体例:

a)界说:

i.代码:

/**

*@model

*/

publicinterfaceStudent{}

申明:必要利用“@model”标志。



b)接口:

i.代码:

/**

*@modelinterface="true"

**/

publicinterfaceTeacher{}

申明:经由过程声明interface属性,在天生代码傍边将不会有TeacherImpl类天生。



c)笼统类:

i.代码:

/**

*@modelabstract="true"

**/

publicinterfaceTeacher{}

申明:经由过程声明abstract属性,在天生代码中TeacherImpl将成为一笼统类。



d)单承继:

i.代码:

/**

*@model

**/

publicinterfaceJavaTeacherextendsTeacher{}



e)多承继:

i.代码:

/**

*@model

**/

publicinterfaceJavaTeacherextendsTeacher,Java{}

申明:在多承继时,接口的完成类将会扩大排在extends中第一个地位的接口的完成类。上例中,天生代码中的JavaTeacherImpl将会extendsTeacherImpl。



2.3XML体例:

a)界说:

i.代码:

<xsd:complexTypename="Teacher"/>

申明:类名由complexType中的name属性指定。



b)接口:

i.申明:XML没有供应用于界说接口的机制。



c)笼统类:

i.代码:

<xsd:complexTypename="Teacher"abstract="true"/>



d)单承继:

i.代码:

<xsd:complexTypename="Teacher"/>

<xsd:complexTypename="JavaTacher">

<xsd:complexContent>

<xsd:extensionbase="st:Teacher"/>

</xsd:complexContent>

</xsd:complexType>

申明:经由过程ComplexType的扩大机制来完成单承继。



e)多承继:

i.申明:还没找到符合的多承继机制。



3属性界说

3.1UML体例:

a)单值属性:

i.图:



ii.天生代码:

publicclassTeacherImplextendsEObjectImplimplementsTeacher{

protectedstaticfinalStringNAME_EDEFAULT=null;

protectedStringname=NAME_EDEFAULT;

publicStringgetName(){…}

publicvoidsetName(StringnewName){…}



}



b)多值属性:

i.图:



ii.天生代码:

publicclassTeacherImplextendsEObjectImplimplementsTeacher{

protectedEListstudents=null;

publicEListgetStudents(){…}



}



c)修正属性的Ecore属性值:

i.图:



ii.天生代码:

publicclassTeacherImplextendsEObjectImplimplementsTeacher{

protectedstaticfinalStringUNCHANGEABLE_EDEFAULT=null;

protectedStringunchangeable=UNCHANGEABLE_EDEFAULT;



protectedstaticfinalStringVOLATILE_EDEFAULT=null;



protectedstaticfinalStringUNSETTABLE_EDEFAULT=null;

protectedStringunsettable=UNSETTABLE_EDEFAULT;

protectedbooleanunsettableESet=false;



publicStringgetUnchangeable(){…}



publicStringgetVolatile(){

thrownewUnsupportedOperationException();

}



publicvoidsetVolatile(StringnewVolatile){

thrownewUnsupportedOperationException();

}



publicStringgetUnsettable(){…}

publicvoidsetUnsettable(StringnewUnsettable){…}

publicvoidunsetUnsettable(){…}

publicbooleanisSetUnsettable(){…}



}

申明:关于unchangeable属性,我把他的changeable属性修正为false,因而在天生的代码傍边,他将不包括有set办法。关于volatile属性,我把他的isVolatile属性设为true,因而在天生的代码傍边对英语volatile的get()/set()办法都完成为空办法体,且抛出一个非常。关于unsettable属性,我把他的isUnsettable属性设为ture,因而在天生的代码傍边除有unsettable属性之外,另有一个用于标志该属性是不是已设置的boolean量unsettableESet。



d)列举范例:

i.图:



ii.天生代码:

publicfinalclassScoreextendsAbstractEnumerator{

publicstaticfinalintGOOD=0;

publicstaticfinalintBAD=1;



}



3.2Java体例:

a)单值属性:

i.代码:

/**

*@model

*/

publicinterfaceTeacher{

/**

*@model

**/

publicStringgetName();

}

申明:界说属性时,必需带有“@model”标志,且办法名必需切合getXyz(),大概

isXyz()的情势。



b)多值属性:

i.代码:

/**

*@model

*/

publicinterfaceTeacher{

/**

*@modeltype="String"

**/

publicListgetStudents();

}



c)修正属性的Ecore值:

i.代码:

publicinterfaceTeacherextendsEObject{

/**

*@modelchangeable="false"

*/

publicStringgetUnchangeable();



/**

*@modelvolatile="true"

*/

publicStringgetVolatile();



/**

*@modelunsettable="true"

*/

publicStringgetUnsettable();

}



d)列举范例:

i.代码:

/**

*@model

*/

publicfinalclassScore{

/**

*@model

*/

publicstaticfinalintGOOD=0;



/**

*@model

*/

publicstaticfinalintBAD=1;

}

申明:列举范例必要界说为finalclass范例,列举值由类外部的staticfinalint指定。



3.3XML体例:

a)单值属性:

i.代码:

<xsd:complexTypename="Teacher">

<xsd:sequence>

<xsd:elementname="name"type="xsd:string"/>

</xsd:sequence>

</xsd:complexType>



b)多值属性:

i.代码:

<xsd:complexTypename="Teacher">

<xsd:sequence>

<xsd:elementname="name"type="xsd:string"minOccurs="0"

maxOccurs="unbounded"/>

</xsd:sequence>

</xsd:complexType>



c)修正属性的Ecore值:

i.申明:Schema没有供应修正Ecore值的办法。



d)列举范例:

i.代码:

<xsd:simpleTypename="Score">

<xsd:restrictionbase="xsd:NCName">

<xsd:enumerationvalue="GOOD"/>

<xsd:enumerationvalue="BAD"/>

</xsd:restriction>

</xsd:simpleType>



4援用界说

4.1UML体例:

a)单向援用:

i.图:



ii.天生代码:

publicclassTeacherImplextendsEObjectImplimplementsTeacher{

protectedStudentstudent=null;

publicStudentgetStudent(){…}

publicvoidsetStudent(StudentnewStudent){…}



}



b)双向援用:

i.图:



ii.天生代码:

publicclassTeacherImplextendsEObjectImplimplementsTeacher{

protectedStudentstudent=null;

publicStudentgetStudent(){…}

publicvoidsetStudent(StudentnewStudent){…}



}



publicclassStudentImplextendsEObjectImplimplementsStudent{

protectedTeacherteacher=null;

publicTeachergetTeacher(){…}

publicvoidsetTeacher(TeachernewTeacher){…}



}



c)多值援用:

i.图:



ii.天生代码:

publicclassTeacherImplextendsEObjectImplimplementsTeacher{

protectedEListstudent=null;

publicEListgetStudent(){…}



}



d)包括援用:

i.图:



ii.天生代码:

publicclassTeacherImplextendsEObjectImplimplementsTeacher{

protectedEListstudent=null;

publicEListgetStudent(){…}

}

申明:当利用包括援用时,因为被援用的对象和援用的对象会被保留在统一个资本外部,因而能够不利用Proxy的体例,因而Teacher外部会利用EObjectContainmentEList来保留对Student的援用。假如是一般援用,则思索会利用EObjectResolvingEList。



e)修正援用的Ecore值:

i.图:



ii.天生代码:

publicclassTeacherImplextendsEObjectImplimplementsTeacher{

protectedNonProxynonProxy=null;



protectedNonChangenonChange=null;



protectedUnsetunset=null;

protectedbooleanunsetESet=false;



publicNonProxygetNonProxy(){

returnnonProxy;

}

publicvoidsetNonProxy(NonProxynewNonProxy){…}



publicVolatilegetVolatile(){…}



publicvoidsetVolatile(VolatilenewVolatile){

thrownewUnsupportedOperationException();

}



publicNonChangegetNonChange(){…}



publicUnsetgetUnset(){…}

publicvoidsetUnset(UnsetnewUnset){…}

publicvoidunsetUnset(){…}

publicbooleanisSetUnset(){…}



}

申明:当援用的resolveProxy值设定为false时,天生的get办法将举行代办署理的注释步骤,而只复杂的前往援用值。当援用的unchangeable值设定为true时,天生代码中将不包括set办法。当援用的volatile值设定为true时,天生的代码中将只包括空办法体。当援用的unsettable设定为true时,除天生援用值之外,还天生用于判别援用是不是已设置的boolean量。



f)Map援用:

i.图:



申明:StudentTable的stereotype必需为MapEntry,她必需包括一个key的属性,且必需有一个称号为value的援用。



ii.天生代码:

publicclassTableImplextendsEObjectImplimplementsBasicEMap.Entry{

protectedstaticfinalintKEY_EDEFAULT=0;

protectedintkey=KEY_EDEFAULT;

protectedStudentvalue=null;

publicObjectgetKey(){…}

publicvoidsetKey(Objectkey){…}

publicObjectgetValue(){…}

publicObjectsetValue(Objectvalue){…}



}



publicclassTeacherImplextendsEObjectImplimplementsTeacher{

protectedEMaptable=null;

publicEMapgetTable(){…}



}



申明:Ecore中的EMap并非从java.util.Map中承继而来,她承继的是EList,以是,她只要一列而不是两列值。关于EMap中的每一个值,都是承继自java.util.Map$Entry的一个EClass,且该EClass包括了key和value属性。因为EMap的这个布局,因而我们不克不及用单值援用Table,而必需用多值,这等价于:

/**

*@modeltype="Table"

*/

EListgetTable();



?SHAPE?*MERGEFORMAT
key:value

key:value

key:value

key:value



key

value

key

key



key

value

value



value

java.util.Map

EMap




4.2Java体例:

a)单向援用:

i.代码:

/**

*@model

*/

publicinterfaceTeacher{

/**

*@model

*/

publicStudentgetStudent();

}



/**

*@model

*/

publicinterfaceStudent{}



b)双向援用:

i.代码:

/**

*@model

*/

publicinterfaceTeacher{

/**

*@model

*/

publicStudentgetStudent();

}



/**

*@model

*/

publicinterfaceStudent{

/**

*@model

**/

publicTeachergetTeacher();

}



c)多值援用:

i.代码:

/**

*@model

*/

publicinterfaceTeacher{

/**

*@modeltype="Student"

*/

publicListgetStudent();

}



d)包括援用:

i.代码:

/**

*@model

*/

publicinterfaceTeacherextendsEObject{

/**

*@modeltype="Student"containment="true"

*/

publicEListgetStudent();

}



e)修正援用的Ecore值:

i.代码:

/**

*@model

*/

publicinterfaceTeacherextendsEObject{

/**

*@modelresolveProxies="false"

*/

publicNonProxygetNonProxy();



/**

*@modelvolatile="true"

*/

publicVolatilegetVolitile();



/**

*@modelchangeable="false"

*/

publicNonChangegetNonChange();



/**

*@modelunsettable="true"

*/

publicUnsetgetUnset();

}



f)Map援用:

i.代码:

/**

*@model

*/

publicinterfaceTeacherextendsEObject{

/**

*@modelkeyType="int"valueType="Student"

**/

publicEMapgetTable();

}



4.3XML体例:

a)单向援用:

i.代码:

<xsd:complexTypename="Teacher">

<xsd:sequence>

<xsd:elementname="student"type="st:Student"/>

</xsd:sequence>

</xsd:complexType>



<xsd:complexTypename="Student">

</xsd:complexType>



b)双向援用:

i.代码:

<xsd:complexTypename="Teacher">

<xsd:sequence>

<xsd:elementname="student"type="st:Student"/>

</xsd:sequence>

</xsd:complexType>



<xsd:complexTypename="Student">

<xsd:sequence>

<xsd:elementname="teacher"type="st:Teacher"/>

</xsd:sequence>

</xsd:complexType>



c)多值援用:

i.代码:

<xsd:complexTypename="Teacher">

<xsd:sequence>

<xsd:elementname="student"type="st:Student"

minOccurs="0"maxOccurs="unbounded"/>

</xsd:sequence>

</xsd:complexType>



d)包括援用:

i.申明:经由过程complexType界说的,除元素的范例为anyURI,QName,IDREF,IDREFS之外,containment的值都为true。



e)修正援用的Ecore值:

i.申明:Schema没有供应修正援用的Ecore值的机制。



f)Map援用:

i.申明:Schema没有供应用于界说Map援用的机制。



5数据范例界说

5.1UML体例:

a)界说:

i.图:



ii.天生代码:

publicclassTeacherImplextendsEObjectImplimplementsTeacher{

protectedstaticfinalDateBORN_EDEFAULT=null;

protectedDateborn=BORN_EDEFAULT;

publicDategetBorn(){…}

publicvoidsetBorn(DatenewBorn){…}



}

5.2Java体例:

a)界说:

i.代码:

publicinterfaceStPackage{

/**

*@modelinstanceClass="java.util.Date"

**/

EDataTypegetNewDate();

}



/**

*@model

*/

publicinterfaceTeacherextendsEObject{

/**

*@model

*/

publicNewDategetBorn();

}

申明:利用Java体例声明新的范例时,必要在Package的声明中增添范例界说。



5.3XML体例:

a)界说:

i.代码:

<xsd:simpleTypename="NewDate">

<xsd:restrictionbase="xsd:date"/>

</xsd:simpleType>

<xsd:complexTypename="Teacher">

<xsd:sequence>

<xsd:elementname="born"type="st:NewDate"/>

</xsd:sequence>

</xsd:complexType>



6办法界说

6.1UML体例:

a)界说:

i.图:



ii.天生代码:

publicclassTeacherImplextendsEObjectImplimplementsTeacher{

publicvoiddoSomething(Stringpar){

thrownewUnsupportedOperationException();

}

}



6.2Java体例:

a)界说:

i.代码:

/**

*@model

*/

publicinterfaceTeacher{

/**

*@model

*/

publicvoiddoSomething(Stringpar);

}



6.3XML体例:

a)界说:

i.申明:Schema不克不及界说操纵。

而学习JAVA我觉得最应该避免的就是:只学习,不思考,只记忆,不实践!
柔情似水 该用户已被删除
沙发
发表于 2015-1-21 16:15:27 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
老尸 该用户已被删除
板凳
发表于 2015-1-26 06:18:30 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
只想知道 该用户已被删除
地板
发表于 2015-1-31 15:44:50 来自手机 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
深爱那片海 该用户已被删除
5#
发表于 2015-2-2 10:53:36 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
再见西城 该用户已被删除
6#
发表于 2015-2-7 18:06:13 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
精灵巫婆 该用户已被删除
7#
发表于 2015-2-21 22:20:29 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
蒙在股里 该用户已被删除
8#
发表于 2015-3-1 18:46:03 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
因胸联盟 该用户已被删除
9#
发表于 2015-3-10 22:02:20 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
若天明 该用户已被删除
10#
发表于 2015-3-15 22:17:51 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
兰色精灵 该用户已被删除
11#
发表于 2015-3-22 16:54:25 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
再现理想 该用户已被删除
12#
发表于 2015-3-22 17:31:41 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
分手快乐 该用户已被删除
13#
发表于 2015-4-4 09:49:11 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
萌萌妈妈 该用户已被删除
14#
 楼主| 发表于 2015-4-14 10:05:13 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
乐观 该用户已被删除
15#
发表于 2015-4-14 18:06:58 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
第二个灵魂 该用户已被删除
16#
发表于 2015-4-19 09:48:56 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
飘灵儿 该用户已被删除
17#
发表于 2015-4-24 07:30:38 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
爱飞 该用户已被删除
18#
发表于 2015-4-25 23:25:22 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
冷月葬花魂 该用户已被删除
19#
发表于 2015-4-28 01:06:15 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
莫相离 该用户已被删除
20#
发表于 2015-5-2 19:54:11 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-21 12:44

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表