ITPub博客

首页 > 应用开发 > Java > SDO For Java 规范(七)——类型(Type)

SDO For Java 规范(七)——类型(Type)

原创 Java 作者:94nidaye 时间:2007-03-28 12:54:09 0 删除 编辑
作者 高科技文盲[@more@]

类型(Type)

类型接口表达了一个数据对象模型或者数据类型的普通视图。

大多数编程语言或者数据建模语言都有数据类型概念; SDO类型与其它数据类型类似。除非该类型为一个简单数据类型,否则一个SDO类型均有一个属性对象集合。

SDO类型到编程语言和数据建模语言类型的映射

Java, C++, UML 或者 EMOF 类

  • 可以使用SDO类型表达类。
  • 类的每一个属性可以表达为一个SDO属性。

XML Schema

  • 可以使用SDO类型表达复杂或简单类型。
  • 元素和属性可以使用SDO属性表达。

C结构体

  • 可以使用SDO类型表达C结构体。
  • 结构体的每一个域可以使用SDO属性表达。

关系数据库

  • 表可以表达为一个SDO类型。
  • 列可以表达为一个SDO属性。

上述领域均共享某些概念,SDO类型和属性接口表达了上述概念的一个小子集。这些接口对于数据对象编程者来说是有用的,因为其需要内省运行期的数据形状和本质。

表达所有特定领域信息的比较完整的元模型API(例如,XML Schema或者EMOF)超出了本规范的范围。

类型内容

一个类型总是有:

  • 名字——同一个URI内类型之间的一个唯一的字符串。
  • URI——一个包的逻辑URI或者是一个目标命名空间,这取决于你的观点。
  • 用于指明该类型为开放的、抽象的、顺序的、还是一个数据类型的布尔型域。

一个类型可能拥有:

  • 属性——由该类型定义的属性对象列表。与简单数据类型一致的类型则没有定义属性。
  • 实例类——用来实现SDO类型的java.lang.Class。

如果DataType为真,那么一个类型必须拥有一个实例类。例如象java.lang.Integer和 java.lang.String这样的类。

如果DataType为假,并且使用了由代码生成器生成的代码,那么一个实例类是可选的。例如象PurchaseOrder和Customer这样的类。

  • 别名——包含额外名字的字符串。在同一个URI内,别名必须是唯一的。

类型上所有基于名字进行操作的方法也可以使用别名进行操作。例如,一个类型可以被赋予一个该领域的别名:一个名为PurchaseOrderType的XML Schema,一个Java名PurchaseOrder和一个数据库表名PRCHORDR。

名字的唯一性

在一个URI内,类型名字和类型别名都是唯一的。在一个类型和任何一个基础类型内,属性名和属性别名都是唯一的。

SDO数据类型

SDO为其所支持的普通数据类型定义了类型(Type),以便于在定义服务使用的类型和属性时保持一致。详细内容参见“Standard SDO Types” 章节。

多重继承

通过允许多个基础类型,类型(Type)支持多重继承。使用多重继承时,使用getProperties()方法获得的属性顺序可以不同于一个类型和基础类型的顺序。

类型方法

  • getName()方法返回一个类型名字。
  • getURI方法返回该类型的URI。
  • getInstanceClass()方法返回实现SDO类型的类。
  • 如果指定的对象是该类型的实例,isInstance(Object object)方法将返回真。
  • 如果该类型用于描述DataType,那么isDataType()方法返回真,如果其用于描述DataObject,则返回假。
  • 如果该类型描述了顺序型数据对象,那么isSequenced()方法返回真,当其为真时,数据对象能够返回一个顺序(Sequence)。
  • 如果该类型允许开放内容,那么isOpen()方法返回真。如果返回值为假,那么dataObject.getInstanceProperties()返回值必定与该类型的任何一个数据对象的dataObject.getType().getProperties()方法返回值相同。
  • 如果类型是抽象的,那么isAbstract()方法返回真,并且该类型不能被实例化。抽象类型不能够用在数据对象或数据工厂(DataFactory)的创建方法中。抽象类型常被用作实例化类型的基础类型。
  • getBaseTypes()方法将返回该类型的基础类型列表。如果没有基础类型,该列表为空。XSD , 和Java“extends”关键字被映射到基础类型列表。
  • getAliasNames()返回该类型的别名列表。如果没有别名,则该列表为空。
  • getProperties()方法返回该类型的所有属性,包括那些在基础类型中声明的属性。
  • getDeclaredProperties()方法用于获取该类型中声明的属性,对基础类型中声明的属性无效。
  • getProperty(String propertyName)方法返回一个特殊的属性,在没有指定名称的属性时返回null。

类型接口

public interface Type

{

String getName();

String getURI();

Class getInstanceClass();

boolean isInstance(Object object);

boolean isDataType();

boolean isSequenced();

boolean isOpen();

boolean isAbstract();

List /*Type*/ getBaseTypes();

List /*String*/ getAliasNames();

List /*Property*/ getProperties();

List /*Property*/ getDeclaredProperties();

Property getProperty(String propertyName);

}

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8042616/viewspace-907250/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    17
  • 访问量
    25055