JAVA网页设计EMF-Ecore模子创立
由于这些智能化家电的市场需求没有预期的高,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我觉得最应该避免的就是:只学习,不思考,只记忆,不实践! 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 是一种使网页(Web Page)产生生动活泼画面的语言 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 Java 编程语言的风格十分接近C、C++语言。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 Java 编程语言的风格十分接近C、C++语言。 是一种使网页(Web Page)产生生动活泼画面的语言
页:
[1]
2