ABAP 面向对象学习

一、面向对象开发特点

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] …
"变量定义和方法定义
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. "实例化类

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值