第五章ABAP对象
在SAP R/3 4.0之前的版本中,ABAP是完全面向过程的语言,ABAP对象是面向对象技术在ABAP语言中的实现,在R/3 4.0后逐步引入到SAP系统。
5.1面向对象基础
5.1.1 面向对象概念
面向对象(OBJECT ORIENTATION,OO)是IT领域中的重要概念之一。面向对象的程序设计(OBJECT-ORIENTED PROGRAMMING,OOP)是以模拟现实世界中的对象为问题解决方案的一种软件设计思想。
1、对象和类
对象(object)是包含数据并提供服务的程序代码段,其中数据部分代表该对象的属性(attribute,相当于某些OOP书籍中的数据成员),而所提供的服务则被称为方法(method,有些书中称之为操作openation或函数function,或成员函数)。一般来说,方法用于操作对象内部私有数据(即对象的属性,代表该对象的当前状态),以显示或改变这个状态。对象的属性不能被外部用户直接访问,而只能通过方法进行,这保证了对象本身的内部一致性。
类(class)是对象的定义,通过属性和方法的封闭来描绘对象。从技术的角度来看,对象是程序中类的实例(instances),在运行时环境中根据类的说明生成。类和类的实例(即对象
1
实体)是一对多关系。
在程序中,对象的识别和寻址是通过对象引用来实现的,对象引用变量可以访问对象的属性和方法。
2、面向对象的基本要素
面向对象的程序设计一般具有下列特性:
1)封装(encapsulation)对象可以对其内部资源(包括属
性和方法)的可见性(visibility)进行限定,每一个对象都有一个接口,决定了其他对象如何与之相互作用。
整个对象的实现过程是封装起来的,在该对象外部不可见。
2)多态(polymorphism)指相同名称的方法在不同的类中
呈现不同的行为。面向对象中的对象和外部存在接口,通过接口可以访问不同类的对象中同名的方法。其意义在于,对于外部用户来说,这些对象的接口是一致的,然而对象本身将根据其实际所属的类选择正确的行为实现。
3)继承(inheritance)可以从一个已存在的类的基础之上
建立新的派生类,派生类可以继承,覆盖原有类的属性和方法或者添加新的类成员(属性和方法均为类的成员)。
3、面向对象的优点
1)面向对象可以使复杂的软件系统易于理解,因为面向对
象的程序设计更好地实现了计算机语言对真实世界的抽象化和模拟。
2)在设计良好的面对对象系统中,对系统的维护有可能被
限定在类级别,即系统的重新设计只需要对类属性或方法进行修改,而不需要涉及所有其他系统元素,这将大大减轻系统维护的负担。
3)通过多态和继承,面向对象程序设计可实现不同类之间
的组件复用。
4)对面向对象系统的修订和维护的工作量较一般系统而
言将大量减轻,因为大部分的问题将在系统设计阶段被发现并加以改正。
5.1.2ABAP Object
Abap objects是SAP R/3 4.0版本之后发布的概念,该概念有双层含义。一是指整个ABAP运行时环境,另一方面代表ABAP语言中新增加的面对对象部分。即本章中主要介绍的ABAP对象语法格式(以及相关开发工具)。
1、运行时环境
用ABAP Objects表示ABAP运行环境,意味着SAP系统本身也逐步趋向以面向对象的方式实现,并将进一步“面向对象”化。引入面向对象后的ABAP Workbench由不同的开发工具组成,而且使用功能模块本身也可以实现特定功能代码
块的封装。Business Object Repository (BOR,商业对象仓库)则允许用户创建SAP商用对象,供系统内部或外部(如通过DCOM和CORBA语言)接口使用。
2、语言扩展
传统ABAP主要使用结构化程序设计技术(structured programming),这种设计中,数据存储在结构化的数据库表中,通过面向过程的程序访问并操作它们。