
ABAP 介绍
一、本章介绍
本章介绍ABAP对象。大家要学会区分第1章~第13章学习的过程化程序模型(StructurecModel)和第14章以后的 Object-oriented(面向对象)程序模型。ABAP程序是从过程化语言COBOI衍生而来的,之后追加了00(Object-oriented,面向对象)概念。WebDynproforABAP中也是ABAF00 构成的一个基本结构。
二、概要
1.什么叫对象定位
SAP BASIS 4.5 版本中最早出现了 ABAP 对象,并从此版本开始出现类(Class),(Interface) (Event)。
从[图14-1]可以看出,在出现ABAP语言之前SAP用宏编译器开发程序。ABAP语言是为了改善报表功能出现的语言,因此一开始受了COBOL和PASCAL 等语言的很大影响。ABAP对象是ABAP的功能扩展语言,是集合了JAVA和C++等面向对象(Object-oriented)程序的优点而开发的语言。
过去的信息系统是以 Input 和 Output 的关系定义的功能为中心组成的。但是,在面向对象(Object-oriented)解决方法中,重点放在了对现实生活中的对象结构化或抽象化。解决方法把实际世界结构化或者抽象化(Abstract)配合显示个体。这些对象由显示属性(Attribute和功能的方法(Method)构成。将现实生活中主要关心的对象移到电脑世界是程序员的首要任务。但是,因现实生活的复杂,无法把现实生活的情况反映到电脑中,因此程序员通过“象化”和“结构化”过程来完成任务。即通过“抽象化”过程简洁、明确地将现实生活模块化,通过“结构化”过程将抽象对象转换为软件对象。
如[图14-2]所示,结构化软件对象为程序员提供了实际世界和软件解决方案1:1的基本设计理念。大家要学会区别和使用前面学过的结构化程序设计与面向对象设计。基本上两个程序设计的重点在于:在 ABAP程序中定义数据,然后如何处理这些数据。
在结构化程序设计中提供处理Input和Output 值的重复使用(Reusability)功能,而在面向对象程序中追加了类,之后可以定义继承及调用方法的扩展功能。类继承有很多优点。可以重复利用代码就是其中之一。在很多类中,共同使用的代码都放在超级类中,因此不用在各自的类中重新定义。类提供了结构化程序中无法实现的新级别的程序设计。可以封装(encapsulate)数据,调用类方法及创建类和独立的个体。 所有对象都以个别实例启用其他对象,因为有这些对象才创造出了新的功能。换言之,面向对象概念是将软件看做多个对象的组合,且对象也是数据和相关函数的集合体。所有个体都由一个个别对象启动,且通过组合这些对象能创造出新的功能。换言之,面向对象概念是将软件看做多个个体的组合,个体意味着数据和相关函数的组合。
开发软件时,分析、设计,还有实现等所有部分都是以对象为基准进行访问的。以前的软件开发方式是业务步骤依赖功能实现的,因此称为结构化或步骤性编程。一般使用面向对象程序设计比结构化程序设计更易使用模块化,因此可利用对象的多种特性提高软件的重复利用性与扩展性。由此还可以明显缩短程序开发时间。如[图14-31所示,实际生活中有飞机、汽车、人类等很多对象。这些对象可能拥有互相相似的属性及功能,可组合成一个集合。这种将相似的对象集合成一个组的,称为类。这样生成的类具有创建个别对象的蓝图功能。
三、结构化ABAP程序中是否需要面向对象概念
ABAP程序是由结构化语言衍生而来的,且面向对象概念是之后才包含进去的。在实际业务中,除了使用ALV外,没有太多机会使用利用类的程序。这是因为SAP是企业应用程序,按顺序处理业务逻辑,利用子函数或者模块很容易实现共同功能。但随着导入Web 环境和 ALV 等报表工具的进化,面向对象程序设计在 ABAP 程序中成为了重要的技术。
事实上 ALV 不用理解面向对象概念,单纯用复制/粘贴就可实现。但是,自从更新为 SAP Enterprise
版本后,一般函数也由类进行开发,且现存很多程序也不再被保持和维护。以后读者若不理解面向对象的基本原理,理解简单的函数也会有困难。过几年后有可能比METHD语更常使用PERFORM语句。
如[图 14-4]所示,比较用结构化、面向对象程序设计获得上传文件的方法。
四、类与对象的关系
以汽车设计图与汽车为例,汽车设计图(类)是定义汽车这一产品(对象)的,用于制造汽车。类只用于创建对象而不是对象本身。要使用所需功能的对象,首先要经过根据类定义对象的过程。开车需要的是车(对象),而不是汽车设计图(类)。需要通过设计图制造出汽车后才能使用。所有面向对象语言的程序设计都是先创建类,然后通过类创建对象后方能使用。在ABAP程序设计语言中,将定义变量的过程作为例子,便容易理解对象与类的区别了。
DATA l object .
上面是创建1位字符型变量的语句。用面向对象概念理解如下。其中,DATA 可以看做是创建对象的类,可用DATA语句创建无限多的对象(变量)。对应的1obiect就是用DATA类生成的对象,执行程序时会占用存储数据的内存空间。即编程语言中的对象指的是存储某些信息的存储空间,而类可定义为记述该存储空间属性的名称。即,编程语言中的个体是为了显示一种信息而分配的一种记忆场所,而类是记录该记忆场所属性的结构名称。
五、实例
根据类创建对象的过程称为实例化,且根据类创建的对象为实例(Instance)(后面陆续会出现实例这一词语,因此需正确理解它的意义)。对象是代表所有实例的总体概念,而实例是强调创建出来的类的具体概念。
Class: 类是创建对象的设计图或者模板。
Object: 对象是指商品/物体/对象/目的,是类的实例。
Object Reference: 在程序内用于访问对象的属性及方法。
Attribute(= Property,State): 对象所具备的属性及特征。
Method(=Behavior): 定义对象的行为。
Event: 用于不同类之间互相访问的方法。