前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ABAP 面向对象学习

ABAP 面向对象学习

作者头像
秋白
发布2021-11-09 17:38:08
4850
发布2021-11-09 17:38:08
举报
文章被收录于专栏:java小白

一、面向对象开发特点

1、抽象(Abstraction)

抽象客观世界实体的模块化

2、封装(Encapsulation)

把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

3、集成(Inheritance)

使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展

4、多态(Polymorphism)

父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

二、类与对象

1、 什么是对象?

  • 类=>类型,对象=>个体
  • 要使用所需功能的对象,首先要经过类定义对象的过程
  • 根据类创建对象的过程称为实例化,根据类

2、CLASS

类是创建对象的模板

3、OBJECT

对象是类的实例

4、类的分类

全局类(Global)

  • 存储在类池中(Class Library in the Repository)
  • 所有ABAP程序都可以对其进行访问
  • 事物代码SE24

本地类(Local)

  • 在程序中定义
  • 只有该程序可以使用

三、程序中类的创建

1、定义类的构成项目(属性、方法、事件)

  • CLASS < class > DEFINITION 要素声明 所有项目都需要定义在三个访问区域之一中 ENDCLASS
  • 实现类的方法 CLASS IMPLEMENTATION ENDCLASS

2、访问区域

三个访问区域

  • Public Section.公有部分 内部可见,外部可见 PUBLIC部分的组件,构成类与用户的接口
  • Protected Section. 保护部门 内部可见,集成可见,外部不可见 PROTECTED部分的组件,构成继承类之间的接口
  • Private Section. 私有部分 内部可见,集成不可见,外部不可见

四、Class构成要素

构成要素的分类

实例组件(Instance-specific component)

  • 参照类创建对象时,内存中存在的项目,每次创建对象时都会被初始化。各个类的对象中都存在

静态组件

  • 遇到创建类的语句(CREATE OBJECT)开始,直到程序结束都存储于内存中,是依赖类存在的项目。即使不创建对象,若已存在与内存中即可以直接使用。
  • 声明方式:属性:CLASS-DATA;方法:CLASS-METHODS。访问:CLASS=>COMP

类的所有要素在声明部分实现(Class Definition)

  • 属性(Attributes) 可以拥有ABAP所有数据类型的类内部数据字段,对象状态由属性决定。DATA/CONSTANTS
  • 方法(Method) 用来定义决定对象行为的类内部执行步骤,可以访问类的所有属性,可通过方法修改对象的内容,另外,方法提供传入传出参数,便于用户交互
  • 事件(Event) 事件是没有继承关系的类之间可以互相调用彼此方法的特殊方法

属性类型

ABAP语句

实例属性

DATA

静态属性

CLASS-DATA

方法类型

ABAP语句

实例属性

METHODS

静态属性

CLASS-METHODS

特殊方法

CONSTRUTOR、CLASS-CONSTRUCTOR、EVENTS

事件

ABAP语句

事件声明

EVENTS evt EXPORTING … VALUE(e1 e2) TYPE type

调用事件(Trigger)

RAISE EVENT evt EXPORTING e1 = f1 e2 = f2 …

Event Handler声明

METHODS meth FOR EVENT evt OF cif IMPORTING e1 e2

Event Handler注册/登陆

SET HANDLER h1 h2 [FOR] …

代码语言:javascript
复制
"变量定义和方法定义
CLASS CL DEFINITION.
  PUBLIC SECTION.
    DATA: LV_DATA TYPE C  LENGTH 20.
    METHODS SET_DATA IMPORTING GV_IMP TYPE CHAR20.
    METHODS GET_DATA EXPORTING GV_EXP TYPE CHAR20.
    EVENTS:TOO_FAST EXPORTING VALUE(P1) TYPE I.
    METHODS WRITE_DATA.
ENDCLASS.
"方法的实现
CLASS CL IMPLEMENTATION.
  METHOD SET_DATA.
    LV_DATA = GV_IMP.
  ENDMETHOD.

  METHOD GET_DATA.
    WRITE LV_DATA.
    GV_EXP = LV_DATA.
  ENDMETHOD.
ENDCLASS.

"类的使用
DATA OBJ TYPE REF TO CL. “声明对象
CREATE OBJECT: OBJ.实例化类

"方法的调用
CALL METHOD OBJ->SET_DATA
    EXPORTING
      GV_IMP = '测试1'.

CALL METHOD OBJ->GET_DATA
    IMPORTING
      GV_EXP = LV_DATA1. 

五、TYPE和TYPE REF TO 的区别

TYPE REF TO 用来定义一个数据对象,这个数据对象用来指向另外数据的; TYPE 用来定义一个数据对象,它本身就是一个存储数据的对象,不是用来指向别的数据对象。

DATA OBJ TYPE REF TO CL. 属于ABAP面向对象编程,CL是一个类,OBJ定义了这个类的对象。 CREATE OBJECT:OBJ. "实例化类

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、面向对象开发特点
    • 1、抽象(Abstraction)
      • 2、封装(Encapsulation)
        • 3、集成(Inheritance)
          • 4、多态(Polymorphism)
          • 二、类与对象
            • 1、 什么是对象?
              • 2、CLASS
                • 3、OBJECT
                  • 4、类的分类
                    • 全局类(Global)
                    • 本地类(Local)
                • 三、程序中类的创建
                  • 1、定义类的构成项目(属性、方法、事件)
                    • 2、访问区域
                      • 三个访问区域
                  • 四、Class构成要素
                    • 构成要素的分类
                      • 实例组件(Instance-specific component)
                      • 静态组件
                      • 类的所有要素在声明部分实现(Class Definition)
                  • 五、TYPE和TYPE REF TO 的区别
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档