ABAP 面向对象程序设计 (01) - 类和对象

SAP 公司于 1999 年发布了面向对象的 ABAP,但在 ABAP 开发者中并不普及,实际开发中用的更多的是面向过程的开发方式。本文简单介绍 ABAP 面向对象开发的过程,重点是如下 ABAP 的语法:

  • 如何定义一个类
  • 如何创建对象的实例 (object instance)
  • 如何调用对象的方法

ABAP 支持 local class 和 global class , local class 通过事务码 SE38 / SE80 创建,只能在本程序中使用;global class 通过事务码 SE24 来创建,在所有的程序中都能使用。

ABAP 面向对象,从概念和机制来说,与其它编程语言并没有太大区别,主要是语法 (syntax) 的不同。本文在示例的时候,特意引入 Java 代码进行说明。

假设我们要定义一个 Book 类,Book 类有 Title、Author、Publisher 和 Price 四个属性,Java 代码如下:

ABAP 面向对象程序设计 (01) - 类和对象_第1张图片

类和对象初步

在 ABAP 语言中,定义一个类,需要包含定义 (definition) 和实现 (implementation) 两部分,定义部分声明该类包含的 attributes, methods 和 constructors; 在实现部分来实现 constructor 和 method 的逻辑。同样的功能,在 ABAP 中代码如下:

ABAP 面向对象程序设计 (01) - 类和对象_第2张图片

通过 DATA 定义的属性为实例属性,ABAP 中使用 -> 符号调用对象实例的属性或方法。接下来,创建两个 Book 的实例,并且打印书籍的信息。

ABAP 面向对象程序设计 (01) - 类和对象_第3张图片

构造方法

可以使用构造方法 (constructor),实现在实例化的时候传入书籍的这 4 个属性,Java 代码如下:

ABAP 面向对象程序设计 (01) - 类和对象_第4张图片

通过构造方法,创建对象实例的代码更加简洁。将 4 个属性变更为 private后,外部将不能访问这些属性,对允许外部修改的属性,比如 price 专门提供了 setPrice() 方法来修改。使用了 constructor 的 ABAP 类代码如下:

ABAP 面向对象程序设计 (01) - 类和对象_第5张图片

ABAP 类和对象语法要点

  • 完整的 class 代码包含定义 (definition) 和实现 (implementation) 两部分;
  • 在声明部分,public section 必须在 private section 前面;
  • 构造函数 (constructor) 名称始终为 constructor,而其他主流语言的构造函数一般与与类名相同。

源码

本篇的代码放在 github 上。

你可能感兴趣的:(#,SAP,ABAP,ABAP,SAP)