Chinaunix首页 | 论坛 | 博客
  • 博客访问: 70669
  • 博文数量: 42
  • 博客积分: 2025
  • 博客等级: 大尉
  • 技术积分: 437
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-03 12:17
文章分类

全部博文(42)

文章存档

2010年(12)

2009年(30)

我的朋友

分类:

2010-01-07 22:46:51

面向对象

面向对象是以模拟现实世界中的对象及其交互关系为问题解决方案的一种软件设计思想,

其强大的优越性已经在无数成功的软件研究和工程实践得到印证,可以毫不夸张的说,面向对象是软件工程思想和实践领域的一种进化和革命。

 

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

一、面向对像的基本要素

       1、封装

             通俗的说,对象可以对其内部的资源的可见性进行限定,每个对象都有一个接口,决定了其它对象如何与之相互交互

       2、多态

             相同名称的方法在不同的类中、不同的场合呈现出不同的行为。

       3、继承

            可以从已存在类的基础上建立新的派生类,派生类可以继承原有类的方法与属性,或者添加新的类成员

二、小例子

REPORT  Z_V_TESTOO.

*类声明

CLASS application DEFINITION.

PUBLIC SECTION. "类方法

METHODS: show_text.

METHODS: show_jia.

PRIVATE SECTION.

DATA text(100) TYPE C VALUE 'this is jiahongguangs test '.

ENDCLASS.

CLASS application IMPLEMENTATION. "类定义

METHOD show_text.

write text.

ENDME THOD.

METHOD show_jia.

WRITE 'jiahonggaung'.

ENDMETHOD.

ENDCLASS.

全局数据声明

DATA ob_app TYPE REF TO application.

START-OF-SELECTION.

CREATE OBJECT ob_app.

CALL METHOD ob_app-> show_text.

CALL METHOD ob_app-> show_jia.

程序中的类定义和声明

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

CLASS 类名 DEFINITION.

PUBLIC SECTION.  全局变量定义

PROTECTED SECTION.  保护变量定义

PRIVATE SECTION.   私有变量定义

ENDCLASS.

CLASS 类名 IMPLEMENTATION.

METHOD 方法名

方法内容

ENDMETHOD.

如果将类定义与传统的abap语言进行比较,类中的声明部分相当于原有的数据定义及声明部分,则实现部分相当于具体代码部分,其中类方法相当于子程序、功能模块等过程代码模块,成员的可见性:类的各个成员必须在definition部分进行声明,在此之前,需要确定该组件的可见性,成员的可见性应基于封装原则确定,对于面向对像中的类来说,其外部接口应该是易于接受且基本稳定的;成员类型:abap中可以定义三种不同的成员类型,分别是属性、方法、和事件,各成员的可见性以及生存周期在类定义的同时被确定;属性是在类内部的数据对像,用于描绘类的状态;对于静态属性,使用  class-data语句定义

CLASS vehicle DEFINITION.

PUBLIC SECTION.

CLASS-DATA class_name(10) TYPE C VALUE 'vehicle'.

PROTECTED SETION.

DATA speed TYPE I.

ENDCLASS.

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

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

阅读(5520) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

xiazhi332014-03-06 15:27:44

【ABAP新手入门福音】,强烈推荐
凤妹ABAP视频教程,不一样的教程,支持售后


凤妹话费充值及超值SAP视频教程: 
http://fengmei666.taobao.com 
欢迎亲们光临!