类型接口表达了一个数据对象模型或者数据类型的普通视图。
大多数编程语言或者数据建模语言都有数据类型概念; SDO类型与其它数据类型类似。除非该类型为一个简单数据类型,否则一个SDO类型均有一个属性对象集合。
Java, C++, UML 或者 EMOF 类
XML Schema
C结构体
关系数据库
上述领域均共享某些概念,SDO类型和属性接口表达了上述概念的一个小子集。这些接口对于数据对象编程者来说是有用的,因为其需要内省运行期的数据形状和本质。
表达所有特定领域信息的比较完整的元模型API(例如,XML Schema或者EMOF)超出了本规范的范围。
一个类型总是有:
一个类型可能拥有:
如果DataType为真,那么一个类型必须拥有一个实例类。例如象java.lang.Integer和 java.lang.String这样的类。
如果DataType为假,并且使用了由代码生成器生成的代码,那么一个实例类是可选的。例如象PurchaseOrder和Customer这样的类。
类型上所有基于名字进行操作的方法也可以使用别名进行操作。例如,一个类型可以被赋予一个该领域的别名:一个名为PurchaseOrderType的XML Schema,一个Java名PurchaseOrder和一个数据库表名PRCHORDR。
在一个URI内,类型名字和类型别名都是唯一的。在一个类型和任何一个基础类型内,属性名和属性别名都是唯一的。
SDO为其所支持的普通数据类型定义了类型(Type),以便于在定义服务使用的类型和属性时保持一致。详细内容参见“Standard SDO Types” 章节。
通过允许多个基础类型,类型(Type)支持多重继承。使用多重继承时,使用getProperties()方法获得的属性顺序可以不同于一个类型和基础类型的顺序。
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);
}