ABAP_面向对象.ppt_第1页
ABAP_面向对象.ppt_第2页
ABAP_面向对象.ppt_第3页
ABAP_面向对象.ppt_第4页
ABAP_面向对象.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ABAP OO编程,一. 介绍 二. 主要概念 三. 使用Control 四. ALV Control例子,一. 介绍,传统的ABAP面向过程编程,面向对象编程,ABAP Objects 是ABAP的扩展,集合了Java,C,Smalltalk等语言的特点。和原来的ABAP无缝集成。,Class 在SAP中,可以在SE24或ABAP编辑器中定义Class。二者的区别类似SE11中定义的结构与程序中定义的结构。 在SE24中,可以看到类的各个部件,条理清楚。代码中的关键字,如public,class-method等在SE24中都可以体现出来。,二. 主要概念,Class:分两部分定义。Class

2、中不能再嵌套定义Class。,在ABAP编辑器中定义Class,定义Class的一个例子,Objects,Object:就是class的实例(instance) 使用object前,先要用下面的语句来定义该object属于哪个类 data type ref to 定义完该对象后,就可以使用create object 来创建对象了。这时系统会分配一块内存区域给对象。,create object时,在内存中分配一个空间给该Object。,如果内存中某个object区域不被指向,系统将释放这部分内存。下图中对两个object使用等号之后,它们指向同一个内存地址,同时释放一个object所占用的内存。

3、,可以使用TYPE TABLE OF REF TO 关键字定义一个内表,来存放该类的多个对象。,可以是各种类型,包括: Data types: scalar (例如 data element), structured, in tables, ABAP elementary types (C, I, .) Object references Interface references,Attribute,按定义位置,分为Public 和Private. Public Attribute:能从class外直接访问和修改。一般来说,尽量少定义Public Attribute。 Private Attr

4、ibute:只能从类中访问和修改。,按定义的关键字,分为Instance 和Static. Instance Attribute:同一个类中多个实例的Instance Attribute各自分开,具有不同的值。使用DATA关键字定义。 用法:实例名-属性 Static Attribute:同一个类中多个实例的Static Attribute的值一样。可以通过各个实例或直接通过类来访问和修改。使用CLASS-DATA定义。在debug时可以看到class-data不占用object的内存。 用法:实例名-属性 或 类名=属性,Method,按定义位置,分为Public 和Private.类似At

5、tribute。 Public Method: 能从类外调用。 Private Method:只能从该类中调用。,按定义的关键字,分为Instance和Static. Instance Method:能使用static和instance的内容。使用Method定义。 用法:实例名-方法名 Static Method:只能使用static的内容。可以不通过实例,直接调用。使用Class-Method定义。 用法:实例名-方法名 或 类名=方法名,Method的参数,Method的参数可以是Class/Object 可以有importing, exporting, changing, return

6、ing等,Constructor方法(初始化),每个类都自动隐性带有名为constructor (Instance)和class_constructor(Static)方法。 要使用这两个method,必需首先定义它们。constructor可以有参数和例外,而class_constructor没有参数。,每次使用create object时自动执行constructor方法. Class-constructor在一个程序中只执行一次。在以下事件前自动执行。 CREATE OBJECT 调用该类的属性 使用Call Method Registering a static event handl

7、er Registering an evetm handler method for a static event,如果constructor带有参数,在create object时就能够通过传入的参数初始化object。 例如 CREATE OBJECT airplane1 exporting p2_name = Hansemand p2_planetype = Boing 747.,Protected,protected sector 中的内容用可以被该类自己,其父类和子类访问。,继承,可以有多级继承 一个子类只有一个直接父类 类知道自己的superclass,但不知道自己的subclas

8、s 继承时,superclass的内容不能除去,只能加入新的内容 用法:定义class时,使用关键字INHERITING FROM,Interface,接口中只有定义。要完成的功能在class的implementation部分实现。接口中的部件自动在类中可用。 接口不分为public,private等部分。 属性、方法、常量、类型等可以和类中的一样定义 接口需要在类定义的public部分列出。 用法: ,可以使用TYPE TABLE OF REF TO 关键字定义一个内表,来存放属于不同类的对象。这些类必须都包含这个接口。,Events,Events类似一个类,有自己的属性和方法,能被其它某一

9、个类调用。 Event只能有EXPORTING 参数 要使用Events,需要以下几点。 在class中定义events,和它的触发条件(events,raise) 定义events,以及它实现的功能(method xxx for event of ) 使用包含events的object前,对event对象使用create object,并且用set handler语句,使event能够被响应。,三. 使用Control(控件),在对屏幕的编程中,常常使用Control技术,能够实现如VC,Java等语言的一些功能,如Event,Attribute等。方便用户和系统交互。 常见的Control

10、:TextEdit,ALV,Picture,HTML viewer等,使用Control前,我们要先在屏幕上创建一个Container控件。Control在这个控件中显示、处理。,做一个RichText 控件的例子1. 创建控件,创建完container后,就可以在程序中,调用系统自带的class了。这里需要用到两个class: cl_gui_custom_container cl_gui_textedit 创建object的时候,传入container的名字做参数,并传入是否自动换行等参数(这些参数,是传到constructor方法的),效果如图,可以看到是一个空白的控件,并自带了一些按钮。控件的大小和位置与container一致。,2. 使用cl_gui_textedit的其它功能,可以调用该类中的方法,如SET_FOCUS,GET_VISIBLE等,来完成其它面向语言中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论