2.1.3面向对象开发
面向对象的程序(OOP)设计是近几年软件开发世界非常流行的一种发展趋势,使用面向对象的思想开发应用程序,可以大大缩短建立复杂应用的时间。PL/SQL通过提供对象类型来支持面向对象的设计,对象类型是用户自定义的一种复合类型,他封装类对象的属性及操及操作这些属性数据的过程和函数。
与c++和java中的类相似,对象类型具有类的特征,如封装、抽象、继承及多态的特性。在定义好对象类型之后,可以基于对对象类型来定义对象表,或者将对象类型作为Oracle表列进行保存。
举个例子,学校里的每一个学生都可以看作是一个对象,他们有姓名、科目、成绩、绩点等,同时还可以包含计算绩点的方法,要定义这个对象,可以使用如下图所示的PL/SQL的创建方法。
create or replace type emp_obj as object
(
name VARCHAR2(20), --学生姓名
subject VARCHAR2(20), -- 学生科目
score NUMBER(4, 1), --学生成绩
mark VARCHAR2(1), --成绩绩点
--计算绩点的方法
member procedure getMarkByScore(score in number, mark out varchar2)
);
--定义对象类实体。实现对象类方法
create or replace type body emp_obj
as
--实现对象的方法
member procedure getMarkByScore(score in number, mark out varchar2)
is
begin
if score > 90 then mark := 'A';
elsif score > 80 then mark := 'B';
elsif score > 70 then mark := 'C';
elsif score >= 60 then mark := 'D';
else mark := 'F'; end if;
end;
end;
PL/SQL的对象定义中包含了成员方法时,需要在类型体中定义成员方法的代码,因此代码中出现两个CREATE方法。当这个对象被创建之后,就可以根据这个对象创建一个对象表,代码如下所示。
CREATE TABLE emp_obj_tab OF emp_obj;
emp_obj_tab 表中的每一行都是一个对象的实例,这允许开发人员使用面向对象的方式对这个表进行操作。