二维码

[面向对象] abap面向对象中类的定义和对象的使用教程

Twilight发表于 2014-02-22 16:55Twilight 最后回复于 2014-02-22 16:55 [复制链接] 3853 0

练习1  类的定义
1、建立include程序ZBC10_EX _A,进行类的定义
2、建立类lcl_airplane
3、私有 实例 属性
Name   string
Planetype  saplane-planetype
私有 静态属性
N_0_ariplanes  i
4、公共的实例方法 set_attributes  可以修改两个私有属性,并且设定每执行一次,n_0_airplanes + 1
5、公共实例方法   display_attributes   用 write语句输出两个私有属性
6、公共静态方法   display_n_o_airplanes  显示 静态属性 n_0_airplanes

练习2 对象的使用
1、建立对类的引用,建立一个内表,建立数个实例,填充到内表当中,每建立一个实例之前,用display_n_o_airplanes 显示当前的实例个数,并用set_attributes 设定属性
2、遍历内表,执行每个实例的display_arrtibutes方法
程序执行效果:
abap面向对象中类的定义和对象的使用.jpg
主程序代码:
  1. REPORT  ZBC10_EX.
  2. INCLUDE ZBC10_EX_A.

  3. DATA:R_AIRPLANE TYPE REF TO LCL_AIRPLANE, "相当于结构
  4.      RT_AIRPLANE TYPE TABLE OF REF TO LCL_AIRPLANE. "相当于内表

  5. START-OF-SELECTION. "面向对象必须写,面向过程可以不写
  6.   CALL METHOD LCL_AIRPLANE=>DISPLAY_N_O_AIRPLANES( ).  "静态方法DISPLAY_N_O_AIRPLANES
  7.   CREATE OBJECT R_AIRPLANE.
  8.   R_AIRPLANE->SET_ATTRIBUTES( IM_NAME = '001' IM_PLANETYPE = '747-400' ). "对象的方法SET_ATTRIBUTES( )
  9.   APPEND R_AIRPLANE TO RT_AIRPLANE.

  10.   CALL METHOD LCL_AIRPLANE=>DISPLAY_N_O_AIRPLANES( ).
  11.   CREATE OBJECT R_AIRPLANE.
  12.   R_AIRPLANE->SET_ATTRIBUTES( IM_NAME = '002' IM_PLANETYPE = '747-500' ).
  13.   APPEND R_AIRPLANE TO RT_AIRPLANE.

  14.   LOOP AT RT_AIRPLANE INTO R_AIRPLANE.
  15.     R_AIRPLANE->DISPLAY_ATTRIBUTES( ).
  16.   ENDLOOP.
复制代码
INCLUDE ZBC10_EX_A.
  1. *&---------------------------------------------------------------------*
  2. *&  Include           ZBC10_EX_A
  3. *&---------------------------------------------------------------------*
  4. CLASS LCL_AIRPLANE DEFINITION.
  5.   PUBLIC SECTION.
  6.     METHODS:SET_ATTRIBUTES IMPORTING IM_NAME TYPE  STRING
  7.                                      IM_PLANETYPE TYPE SAPLANE-PLANETYPE.
  8.     CLASS-METHODS:DISPLAY_N_O_AIRPLANES.
  9.     METHODS:DISPLAY_ATTRIBUTES.
  10.   PRIVATE SECTION.
  11.     DATA:NAME TYPE  STRING,
  12.          PLANETYPE TYPE SAPLANE-PLANETYPE.
  13.     CLASS-DATA:N_0_ARIPLANES TYPE I.
  14. ENDCLASS.                    "LCL_AIRPLANE DEFINITION

  15. *----------------------------------------------------------------------*
  16. *       CLASS LCL_AIRPLANE IMPLEMENTATION
  17. *----------------------------------------------------------------------*
  18. *
  19. *----------------------------------------------------------------------*
  20. CLASS LCL_AIRPLANE IMPLEMENTATION.
  21.   METHOD SET_ATTRIBUTES.
  22.     NAME = IM_NAME.
  23.     PLANETYPE = IM_PLANETYPE.
  24.     N_0_ARIPLANES = N_0_ARIPLANES + 1.
  25.   ENDMETHOD.                    "SET_ATTRIBUTES
  26.   METHOD DISPLAY_N_O_AIRPLANES.
  27.     WRITE: / 'Number of airplanes:',N_0_ARIPLANES.
  28.   ENDMETHOD.                    "DISPLAY_N_O_AIRPLANES
  29.   METHOD DISPLAY_ATTRIBUTES.
  30.     WRITE: / 'name',NAME,'planetype',PLANETYPE.
  31.   ENDMETHOD.                    "display_attributes
  32. ENDCLASS.                    "LCL_AIRPLANE IMPLEMENTATION
复制代码

回复

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表