二维码

[面向对象] abap 面向对象的概念及小实例

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

面向对象:面向对象是以模拟现实世界中的对象及其交互关系为问题解决方案的一种软件设计思想,其强大的优越性已经在无数成功的软件研究和工程实践得到印证,可以毫不夸张的说,面向对象是软件工程思想和实践领域的一种进化和革命。

面向过程为主的abap体系为了适应现代软件工程发展的趋势和ERP的进化,也逐渐,应该是不得不,推出一些面向对象的机制。尽管与其它纯粹为OO而生的语言体系比显得幼稚和笨拙,但必竟还是从无到有的具备了一些面向对象的优越性,更重要的是,目前SAP开发还是以ABAP为主的--尽管其早就宣布兼容java,所以,只能忍着(看来,忍是一种智慧,这种智慧无处不在,从为人到处事,从学习到工作,呵,忍得乱花渐欲迷人眼,才能习得仗剑走江湖,才能守得云开见月明),只能扬长避短,只能戴着镣铐跳舞。

一、面向对像的基本要素
1、封装
      对象可以对其内问好资源的可见性进行限定,每个对象都有一个接口,决定了其它对象如何与之相互交互
2、多态 abap面向对象中的多态使用教程
      相同名称的方法在不同的类中呈现出不同的行为。
3、继承 abap面向对象中的继承使用教程
     可以从已存在类的基础上建立新的派生类,派生类可以继承原有类的方法与属性,或者添加新的        

二、小例子执行效果:
OO_DAMON.jpg

主程序代码:
  1. *类声明
  2. CLASS APPLICATION DEFINITION.
  3.   PUBLIC SECTION.           "类方法
  4.     METHODS: SHOW_TEXT.
  5.     METHODS: SHOW_JIA.
  6.   PRIVATE SECTION.          "类属性
  7.     DATA TEXT(100) TYPE C VALUE 'this is Damon test '.
  8. ENDCLASS.                    "application DEFINITION

  9. *----------------------------------------------------------------------*
  10. *       CLASS application IMPLEMENTATION
  11. *----------------------------------------------------------------------*
  12. *
  13. *----------------------------------------------------------------------*
  14. CLASS APPLICATION IMPLEMENTATION.  "类定义
  15.   METHOD SHOW_TEXT.
  16.     WRITE TEXT.
  17.   ENDMETHOD.                    "show_text
  18.   METHOD SHOW_JIA.
  19.     WRITE 'Damon'.
  20.   ENDMETHOD.                    "show_jia
  21. ENDCLASS.                    "application IMPLEMENTATION
  22. *全局数据声明
  23. DATA OB_APP TYPE REF TO APPLICATION.

  24. START-OF-SELECTION.
  25.   CREATE OBJECT OB_APP.
  26.   CALL METHOD OB_APP->SHOW_TEXT( ).
  27.   CALL METHOD OB_APP->SHOW_JIA( ).
复制代码

程序中的类定义和声明

     abap中使用class /endclass语句进行类定义,且有声明部分和具体实现部分组成,类声明部分中包含类成员(具体包括类的属性,方法和事件等)的名称及说明,类的实现部分则包含具体的类方法的实现代码。

  1. class class definition

  2.          public section.

  3.          protected section.

  4.          private section.

  5. endclass.

  6. class class implementation.

  7.          method      ......endmethod.

  8. endclass.
复制代码

      如果将类定义与传统计的abap语言进行比较,类中的声明部分相当于原有的数据定义及声明部分,则实现部分相当于具体代码部分,其中类方法相当于子程序、功能模块等过程代码模块,

      成员的可见性:类的各个成员必须在definition部分进行声明,在此之前,需要确定该组件的可见性,成员的可见性应基于封装原则确定,对于面向对像中的类来说,其外部接口应该是易于接受且基本稳定的;

     成员类型:abap中可以定义三种不同的成员类型,分别是属性、方法、和事件,各成员的可见性以及生存周期在类定义的同时被确定;属性是在类内部的数据对像,用于描绘类的状态;对于静态属性
使用  class-data语句定义
  1. class vehicle definition.

  2.          public section.

  3.          class-data class_name(10) typec c value 'vehicle'.

  4.         protected section.

  5.          data speed type i

  6. endclass.
复制代码

上述代码在类vehicle中定义了一个静态属性class_name和一个实例属性speed。对于公有组件,可以在属性定义语句中增加read-only关键字,则该属性不能被类外部读取,但可被类的内部方法所修改,除data语句外也可以使用constant语句定义类常量,类常量不能在编译和运行期内修改,必须在类定义时,指明其值,因为其性质类似于静态属性,类似地,可以使用type语句在类中定义数据类型,数据类型也相当于静态属性,

方法是对像行为的实现部分.可以将其视为是类中的过程,与过程类似,方法是与外界存在接口的程序块,也是一种处理块;在方法中,可以定义内部数据。实例方法只能访问该对像实例中的所有属性和事件,而静态方法则只能访问类的静态属性和事件;要调用实例方法,必须首先创建一个类实例,再通过该实例调用方法;而调用类的静态方法时,则可通过实例或者类本身调用。
回复

使用道具 举报

快速回帖

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

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