第五章ABAP对象

上传人:大米 文档编号:498116923 上传时间:2023-08-26 格式:DOCX 页数:54 大小:38.19KB
返回 下载 相关 举报
第五章ABAP对象_第1页
第1页 / 共54页
第五章ABAP对象_第2页
第2页 / 共54页
第五章ABAP对象_第3页
第3页 / 共54页
第五章ABAP对象_第4页
第4页 / 共54页
第五章ABAP对象_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《第五章ABAP对象》由会员分享,可在线阅读,更多相关《第五章ABAP对象(54页珍藏版)》请在金锄头文库上搜索。

1、第五章ABAP对象在SAP R/3 4.0之前的版本中,ABAP是完全面向过程的语 言,ABAP对象是面向对象技术在ABAP语言中的实现,在 R/3 4.0后逐步引入到SAP系统。5.1面向对象基础5.1.1面向对象概念面向对象(OBJECT ORIENTATION,。)是IT领域中的重 要概念之一。面向对象的程序设计(OBJECT-ORIENTED PROGRAMMING,OOP)是以模拟现实世界中的对象为问题 解决方案的一种软件设计思想。1、对象和类对象(object)是包含数据并提供服务的程序代码段,其中数 据部分代表该对象的属性(attribute,相当于某些OOP书籍 中的数据成员)

2、,而所提供的服务则被称为方法(method, 有些书中称之为操作openation或函数function,或成员函数)。 一般来说,方法用于操作对象内部私有数据(即对象的属性, 代表该对象的当前状态),以显示或改变这个状态。对象的 属性不能被外部用户直接访问,而只能通过方法进行,这保 证了对象本身的内部一致性。类(class)是对象的定义,通过属性和方法的封闭来描绘对 象。从技术的角度来看,对象是程序中类的实例(instances), 在运行时环境中根据类的说明生成。类和类的实例(即对象实体)是一对多关系。在程序中,对象的识别和寻址是通过对象引用来实现的,对 象引用变量可以访问对象的属性和方法

3、。2、面向对象的基本要素面向对象的程序设计一般具有下列特性:1) 封装(encapsulation )对象可以对其内部资源(包括属 性和方法)的可见性(visibility )进行限定,每一个对 象都有一个接口,决定了其他对象如何与之相互作用。 整个对象的实现过程是封装起来的,在该对象外部不可 见。2) 多态(polymorphism)指相同名称的方法在不同的类中 呈现不同的行为。面向对象中的对象和外部存在接口, 通过接口可以访问不同类的对象中同名的方法。其意义 在于,对于外部用户来说,这些对象的接口是一致的, 然而对象本身将根据其实际所属的类选择正确的行为 实现。3) 继承(inherita

4、nce)可以从一个已存在的类的基础之上 建立新的派生类,派生类可以继承,覆盖原有类的属性 和方法或者添加新的类成员(属性和方法均为类的成 员)。3、面向对象的优点1) 面向对象可以使复杂的软件系统易于理解,因为面向对象的程序设计更好地实现了计算机语言对真实世界的 抽象化和模拟。2)在设计良好的面对对象系统中,对系统的维护有可能被 限定在类级别,即系统的重新设计只需要对类属性或方 法进行修改,而不需要涉及所有其他系统元素,这将大 大减轻系统维护的负担。3)通过多态和继承,面向对象程序设计可实现不同类之间 的组件复用。4)对面向对象系统的修订和维护的工作量较一般系统而 言将大量减轻,因为大部分的问

5、题将在系统设计阶段被 发现并加以改正。5.1.2ABAP ObjectAbap objects是SAP R/3 4.0版本之后发布的概念,该概念有 双层含义。一是指整个ABAP运行时环境,另一方面代表 ABAP语言中新增加的面对对象部分。即本章中主要介绍的 ABAP对象语法格式(以及相关开发工具)。1、运行时环境用ABAP Objects表示ABAP运行环境,意味着SAP系统本 身也逐步趋向以面向对象的方式实现,并将进一步“面向对 象”化。引入面向对象后的ABAP Workbench由不同的开发 工具组成,而且使用功能模块本身也可以实现特定功能代码块的封装。Business Object Re

6、pository (BOR,商业对象仓库) 则允许用户创建SAP商用对象,供系统内部或外部(如通过 DCOM和CORBA语言)接口使用。2、语言扩展传统ABAP主要使用结构化程序设计技术(structured programming),这种设计中,数据存储在结构化的数据库表 中,通过面向过程的程序访问并操作它们。ABAP OBJECTS是ABAP语言中的一套面向对象语句集合, 主要思想是将数据和功能整合在对象中,但并不和以往存在 的ABAP语法存在冲突。可以将新的OO语句添加到原有的 ABAP程序中,也可以在ABAP OBJECTS中使用“传统” 的ABAP语句。ABAP语言的面对对象部分是基

7、于JAVA和C+的OO模型 进行改造而成的,并与DCOM和CORBA等外部对象接口相 互兼容。SAP 商业对象(SAP BUSINESS OBJECTS)和 GUI 对象在系统内部也分别实现面向对象技术,并可以与ABAP Objects相整合。例子:Report z_simple_object.Class application definition.Public section.Methods:show text.Private section.Data: text(lOO) type c value this is my first abap object. Endclass.Class

8、application implementation.Method show_text.Write text.Endmethod.Endclass.Data ob_app type ref to application.Start-of-selection.Create object ob_app.Call method ob_app-show_text.该程序中包括类的定义和实现,类对象的创建,以及类方法 调用的整个流程,通过调用该方法实现了数据在屏幕中的输 出。输出:this is my first abap object.如果在ABAP Workbench的Object Navigato

9、r中查看该程序, 可以看到类的定义和实现出现在对象列表中。5.2类和对象类是面向对象程序设计语言中的基本元素。和ABAP的数据 类型类似,ABAP中的类也有程序内部的局域类和全局类之 分,其作用范围不同,但ABAP中的全局类是通过ABAP工 作台中的类创建工具class bulider开发的,保存在系统类库 程序中(class pool),可供所有程序使用。而在程序内部定 义的类则一般只应用于本程序,但二者的定义原则和格式是 一致的。5.2.1程序中的类定义1、类声明及实现ABAP使用CLASS/ENDCLASS语句进行类定义,且由声明 部分和具体实现部分组成。类声明部分中包含类成员 (com

10、ponent,又称为member,具体包括类的属性、方法和事 件等)的名称及说明。类的实现部分则包含具体的类方法的 实现代码,以完成某具体功能。类的声明和实现的基本语句结构如下:Class class definition.Public section. Protected section. Private section.Endclass.Class class implementation.Method end method. Endclass.如果将类定义与传统的ABAP语言进行比较,类中的声明部 分相当于原有的数据定义及声明部分,而实现部分则相当于 具体代码部分,其中的类方法相当于子程

11、序、功能模块等过 程代码模块。3、成员可见性类的各个成员都必须在DEFINITION部分进行声明,在此之 前,需要确定该组件的可见性。成员的可见性应基于封装原 则确定;对于面向对象中的类来说,其外部接口应该是易于接 受而基本稳定的,所以在一个类的所有成员中,应只有一部 分是可以被类外的元素(如程序中的语句或其他对象)获得 并进行操作的;而另一部分内容则被封装在类的内部,没有接 口功能,只供类自身使用。在ABAP对象中,共有三种可见性:公有、保护、私有,分 别对应三个代码部分。1) 公有部分(PUBLIC SECTION)中定义的类成员可以被 所有对象使用,包括类方法以及其派生类中定义的方 法。

12、这些组件构成了类的外界接口部分。2) 保护部分(PROTECTED SECTION)中定义的类成员 只能被类及其派生类中的方法使用,外部不可见,这些 组件连同公有组件构成了类和派生类对象之间的接口。3) 私有部分(PRIVATE SECTION)中定义的类成员则只 能被类本身的方法所使用。一般来说,公有(即外部可见)成员一般不应该是可以被修 改的数据元素,因为在类外部对类中的成员进行修改是不符 合面向对象中的封装原则的,所以大多数情况下,公有部分 常常仅定义类方法,而类属性(即类中的数据成员)则一般 定义为类的私有或保护数据,只能通过自身或其派生类的方 法来操作。成员的可见性是面向对象与面向过

13、程的程序设计思想中的 一个主要区别,在面向过程的程序设计中,过程中参数接口 的可见性是系统预定义的。例如一个功能组中的所有数据对 象都是私有的,而其中所有的功能模块和子程序都一定是公 有的,这种属性不能由程序员在程序中进行改变。4、成员类型ABAP类中可以定义三种不同类型的成员,分别是属性、方 法和事件。各成员的可见性以及生存周性在类定义时的同时 被确定。根据生存期的不同,有实例成员和静态成员之分别, 实例成员仅隶属于一个特定的类实例,即一个对象,而静态 成员则属于整个类,是所有的类对象共享的内存区域。属性是在类内部的数据对象,用于描绘类的状态。对于实 例属性,使用DATA语句定义,语法与数据

14、对象声明相同, 对于静态属性(类属性),贝IJ使用CLASS-DATA语句进行定 义。属性在类的声明部分进行定义。Class vehicie definition.Public section.Class-data class_name(10) type c value vehicleProtected section.Data speed type i.Endclass.对于公有组件,可以在属性定义语句中增加READ-ONLY关 键字,则该属性不能被类外部读取但可被类的内部方法所修 改。这种定义方法避免了每次读取类属性时都需要分配相应 的读取方法,因为直接获得类属性要比通过类方法更为高 效。

15、除了 DATA语句外,也可以使用CONSTANT语句定义类常 量,类常量不能在编译和运行期内修改,必须在类定义时指 明其值,因而其性质类似于静态属性。类似地,可以使用TYPES语句在类中定义数据类型,数据 类型也相当于静态属性,其定义方法与普通ABAP程序类似, 但使用时需要遵循定义部分的可见性原则。方法是对象行为的实现部分,可以将其视为是类中的过程。与过程类似,方法是与外界存在接口的独立程序段,也是一 种处理块;在方法中,可以定义内部数据。实例方法只能访问 该对象实例中的所有属性和事件,而静态方法则只能访问类 的静态属性和事件。要调用实例方法,必须首先创建一个类 实例,再通过该实例调用方法;而调用类的静态方法时,则可 通过实例或者类本身调用。类方法需要在类的声明和实现两部分进行定义,在类的声明 部分说明方法的参数接口,在类的实现部分则通过ABAP代 码完成具体的功能。方法的声明关键字为 METHODS和 CLASS-METHODS;实现部分代码在语句 METHOD 和 ENDMETHOD之间定义。方法声明语句如下:METHOD methImporting I type type Exporting e type type.Changing c type type.Exceptions x 该语句定义了

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号