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

2018-10-01  本文已影响123人  Stone0823

SAP 公司于 1999 年发布了面向对象的 ABAP,但实际开发中更多的是面向过程的开发方式。本文简单介绍面向对象的初步。

如果我们需要使用一个对象,我们需要做下面几项工作:

假设我们需要开发一个银行账户管理的程序,包含存款、取款、余额查询的功能。如果使用 ABAP 的数据类型,UML 类图如下:

代码如下:

REPORT  z_oop_hello_world.

* lcl_account class definition
CLASS lcl_account DEFINITION.
  PUBLIC SECTION.
    TYPES:
      ty_balance TYPE p LENGTH 10 DECIMALS 2.
    METHODS:
      constructor IMPORTING p_id TYPE string,
      deposit     IMPORTING p_amount TYPE p,
      withdraw    IMPORTING p_amount TYPE p,
      get_balance RETURNING value(r_balance) TYPE ty_balance  .

  PRIVATE SECTION.
    DATA:
      id TYPE string,
      balance TYPE p DECIMALS 2.
ENDCLASS.                  

* lcl_account class implementation
CLASS lcl_account IMPLEMENTATION.
  METHOD constructor.
    id = p_id.
    balance = '0.00'.
  ENDMETHOD.       

  METHOD deposit.
    balance = balance + p_amount.
  ENDMETHOD.       

  METHOD withdraw.
    balance = balance - p_amount.
  ENDMETHOD.                  

  METHOD get_balance.
    r_balance = balance.
  ENDMETHOD.                
ENDCLASS.                 

DATA: lo_account TYPE REF TO lcl_account,
      lv_balance TYPE f.

START-OF-SELECTION.
  CREATE OBJECT lo_account EXPORTING p_id = '3001'.

  CALL METHOD lo_account->deposit
    EXPORTING
      p_amount = '2000.00'.

  CALL METHOD lo_account->withdraw
    EXPORTING
      p_amount = '600.00'.

  lv_balance = lo_account->get_balance( ).
  WRITE: / '存款余额:', lv_balance EXPONENT 0 DECIMALS 2 LEFT-JUSTIFIED.

代码说明:

所以通过声明一个 ty_balance 自定义类型的方法解决。

上一篇 下一篇

猜你喜欢

热点阅读