对象类型简介

       对象类型是用户自定义的一种复合数据类型,它封装了数据结构和用于操纵这些数据结构的过程和函数。在建立复杂应用程序时,通过使用对象类型可以降低应用开发难度,进而提高应用开发的效率和速度。


        1.对象类型组件

         对象类型包括属性和方法,其中,属性(Attribute)用于描述对象所具有的特征,而方法(Mothod)则用于实现对象所执行的操作。


例如,雇员对象类型employee_type应该具有编码、姓名、工资、岗位以及部门号等属性,还应该具有用于调整岗位、调整工资、调整部门的方法。


                                                       

对象类型 employee_type
属性:方法:
eno编码change_job调整岗位
name姓名change_sal调整工资
salary工资change_dept调整部门
job岗位
dno部门号

        2.对象类型和对象实例

        对象类型(Object Type)是为了描述现实世界对象所抽象出来的具体特征,应该涵盖对所具有的公用特性。例如,每个雇员都有编码、名称、工资、岗位和部门号等特征,所以对象类型employee_type应该包含这些特征的描述。Object Instance是对象类型的具体实现,对应于现实世界的具体对象。例如,雇员SCOTT和SMITH是对象类型employee_type的两个对象实例。

               



        3.构造对象类型

        对象类型规范(Object Type Specification)和对象类型体(Object Type Body)两个部分,其中,对象类型规范是对象与应用的接口,它用于定义对象的公用属性和方法;而对象类型体则用于实现对象类型规范所定义的公用方法。例如,当监理对象类型employee_type,首先需要监理对象类型规范,其次需要通过对象类型体实现公用的对象方法。如下图所示:


对象类型规范employee_type
定义公用属性:
    eno、name、salaty、job、dno
定义公用成员方法:
    change_job、change_salaty、change_dept


对象类型体employee_type
实现所有成员方法:
    change_job
    change_salary
    change_dept

        4.对象类型属性

        对象类型属性用于描述对象所具有的特征,例如对象类型employee_type具有eno,name,salary等属性,这些属性分别用于描述雇员编码、姓名和工资。对象类型最少要包含一个属性,最多可以包含1000个属性。当定义对象类型属性时,必须要提供属性名和数据类型,对象属性可以使用多数Oracle数据类型,但不能使用以下数据类型:

      LONG和LONG RAW;

      ROWID和UROWID;

      PL/SQL特有类型(例如BINARY_INTGER,BOOLEAN,%TYPE,%ROWTYPE,REF CURSOR,RECORD,PLS_INTEGER等)。

      注意,在定义对象类型属性时,既不能指定对象属性的默认值,也不能指定NOT NULL选型。


      5.对象类型方法

      对象类型方法用于描述对象所要执行的操作。当定义对象类型时,既可以定义方法,也可以不定义方法。在定义方法时,可以定义构造方法、MEMBER方法、STATIC方法、MAP方法以及ORDER方法。

      6.对象表(Object Table)

      对象表是指包含对象类型的表。对于普通表而言,其列全部使用标量数据类型(例如NUMBER,VARCHAR2,DATE,LONG,LOB等);而对象表至少包含一个对象类型列(例如employee_type类型)。Oracle又包含行对象和列对象两种对象表,其中行对象是指直接基于对象类型所建立的表,而列对象则是指包含多个列的对象表:

--行对象:CREATE TABLE employee OF employee_type;
--列对象:CREATE TABLE department(
                    dno NUMBER,dname VARCHAR2(10),
                    employee employee_type);

      7.对象类型继承(Type Inheritabce)

      对象类型继承是指一个对象类型继承另一个对象类型。对象类型继承由父类型(Supertype)和子类型(Subtype)组成,其中父类型用于定义不同对象类型的公用属性和方法,而子类型不仅继承了父类型的公用属性和方法,而且还可具有自己的私有属性和方法。

       8.REF数据类型

      REF是指向行对象的逻辑指针,是Oracle的一种内置数据类型。建表时通过使用REF引用行对象,可以使不同表共享相同对象,从而降低内存占用,并提高了应用性能。假定基于对象类型employee_type建立了行对象employee,那么在建立department表时,为了引用行对象employee中的数据,可以使用REF数据类型。示例如下:

            CREATE TABLE department(

                   dno NUMBER(2),dname VARCAR2(10), emp REF employee_type);



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值