美文网首页
ABAP 面向对象程序设计 (01)

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

作者: Stone0823 | 来源:发表于2018-10-01 19:22 被阅读123次

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

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

  • 定义一个类
  • 创建一个对象,或者称为对象的实例 (object instance)
  • 调用对象的方法

假设我们需要开发一个银行账户管理的程序,包含存款、取款、余额查询的功能。如果使用 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.

代码说明:

  • 完整的 class 代码包含定义 (definition) 和实现 (implementation) 两部分。在定义部分,对数据类型、变量、方法进行声明。

  • 在声明部分,public section 必须在 private section 前面。

  • 构造函数 (constructor): 名称始终为 constructor,与其他主流语言的构造函数与类名同名不同。

  • 如果 p 类型作为方法的返回值,因为 p 并不是一个 full specified type,检查时解释器会提示如下错误:

    The type of a RETURNING parameter must be fully specified.

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

相关文章

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

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

  • 第四章 对象与类

    1 面向对象程序设计概述 面向对象程序设计(简称OOP)是当今主流的程序设计范型 Java是完全面向对象的,必须熟...

  • 《软件工程》笔记7

    面向对象的实现 面向对象的程序设计最好还是选用面向对象的编程语言。 良好的程序设计风格对于面向对象实现来说格外重要...

  • 《Java核心技术卷 I》之 Java对象与类

    Java对象与类 面向对象程序设计 面向对象程序设计,简称OOP,Java语言就是完全面向对象的。 类 类(cla...

  • JavaScript面向对象编程指南--读书笔记(上)

    第一章:面向对象的JavaScript 面向对象的程序设计 面向对象程序设计(oop)中最常用到的概念: 对象、方...

  • ABAP对象-面向对象

    1 面向对象基础 不多赘述何为对象与类。简单回顾一下在面向对象特性。 封装 限定内部资源的可见性 多态 相同名称的...

  • ABAP面向对象

    面向对象程序设计重要概念面向对象编程是编程范式(programming paradigm)的一种,是目前应用最为普...

  • oc编程思想

    面向对象概念 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一...

  • 编程语言基础概念1

    什么是面向对象? 面向对象:指在程序设计中采用封装、继承、多态等设计方法。 什么是面向过程? 面向过程:程序设计按...

  • python面向对象编程

    面向对象编程(一) 1、面向过程程序设计与面向对象程序设计: 面向过程的程序设计把计算机程序视为一系列的命令集合,...

网友评论

      本文标题:ABAP 面向对象程序设计 (01)

      本文链接:https://www.haomeiwen.com/subject/unknoftx.html