小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

ABAP面向?qū)ο罂偨Y(jié)

 昵稱46169147 2017-08-07
clipboard.png

實(shí)例屬性  靜態(tài)屬性

clipboard.png

組件

clipboard.png

訪問(wèn)區(qū)域;權(quán)限

聲明項(xiàng)目時(shí),要注意聲明訪問(wèn)區(qū)域

clipboard.png

訪問(wèn)實(shí)力對(duì)象,需要首先聲明一個(gè)對(duì)象。  DATA 名   TYPE REF TO  類。

訪問(wèn)實(shí)例屬性格式 對(duì)象->屬性名稱

clipboard.png

調(diào)用方法,如下

clipboard.png

類中定義的變量也可以修改

clipboard.png

一個(gè)類可以有多個(gè)實(shí)例,多個(gè)實(shí)例之間相對(duì)獨(dú)立,一個(gè)實(shí)例修改了值,不會(huì)影響其他實(shí)例的值。

clipboard.png

在類中(definition)靜態(tài)屬性聲明

clipboard.png

clipboard.png

在類中(implementation)靜態(tài)方法實(shí)現(xiàn)

clipboard.png

靜態(tài)屬性的訪問(wèn),不依附對(duì)象,直接通過(guò)類=>訪問(wèn)

clipboard.png

靜態(tài)方法的訪問(wèn)

clipboard.png

clipboard.png

Class構(gòu)成要素

·構(gòu)成要素的分類

–實(shí)例組件(Instance-specific component)

·參照類創(chuàng)建對(duì)象時(shí),內(nèi)存中存在的項(xiàng)目,每次創(chuàng)建對(duì)象時(shí)都會(huì)被初始化。各個(gè)類的對(duì)象中都存在

·聲明方式:屬性:DATA;方法:METHODS。訪問(wèn):OBJECT->COMP

–靜態(tài)組件(Static component)

·遇到創(chuàng)建類的語(yǔ)句(CREATE OBJECT)開(kāi)始,直到程序結(jié)束都存儲(chǔ)于內(nèi)存中,是依賴類存在的項(xiàng)目。即使不創(chuàng)建對(duì)象,若已存在與內(nèi)存中即可以直接使用。

·聲明方式:屬性:CLASS-DATA;方法:CLASS-METHODS。訪問(wèn):CLASS=>COMP

·類的所有要素在聲明部分實(shí)現(xiàn)(Class Definition)

–屬性(Attributes)

·可以擁有ABAP所有數(shù)據(jù)類型的類內(nèi)部數(shù)據(jù)字段,對(duì)象狀態(tài)由屬性決定。DATA/CONSTANTS

–方法(Method)

·用來(lái)定義決定對(duì)象行為的類內(nèi)部執(zhí)行步驟,可以訪問(wèn)類的所有屬性,切可通過(guò)方法修改對(duì)象的內(nèi)容,另外,方法提供傳入傳出參數(shù),便于用戶交互

–事件(Event)

·事件是沒(méi)有繼承關(guān)系的類之間可以互相調(diào)用彼此方法的特殊方法

clipboard.png

對(duì)象

·對(duì)象指的是類的實(shí)例,每個(gè)對(duì)象都有自己固有的屬性。

·一個(gè)類可以創(chuàng)建多個(gè)對(duì)象。

·在ABAP程序中要訪問(wèn)對(duì)象,需要使用參照對(duì)象(Object Reference),參照對(duì)象始終存在于參照對(duì)象變量中

–DATA    obj TYPE REF TO class.

方法

·方法定義的基本語(yǔ)法

–METHOD

IMPORTING …TYPE….

EXPORTING…TYPE…

CHANGING …TYPE…

EXCEPTIONS … X1…

–CALL METHOD [oref->|class=>]meth

EXPORTING … i1 = f1…

RECEIVING       R  = h .

–IMPORT/EXPORT:數(shù)據(jù)輸入/輸出接口,接口參數(shù)可以參考單個(gè)變量,結(jié)構(gòu),或者內(nèi)表

–CHANGING:同時(shí)作為輸入輸出接口,接口參數(shù)可以參考單個(gè)變量,結(jié)構(gòu),或者內(nèi)表

–RETURNING:返回類傳遞數(shù)值。該定義不能喝CHANGING/EXPORTING同時(shí)使用

–EXCEPTIONS:返回執(zhí)行中所出現(xiàn)的錯(cuò)誤

·類函數(shù)可以擁有多個(gè)輸入?yún)?shù),但只能有一個(gè)輸出參數(shù)。類的輸出接口參數(shù)必須與類函數(shù)中所定義類型保持一致

方法的調(diào)用

·當(dāng)方法沒(méi)有輸出參數(shù)(EXPORTING)的時(shí)候可以通過(guò)以下方式調(diào)用:

–CALL METHOD meth().  “ 沒(méi)有輸入?yún)?shù)

–CALL METHOD meth( a ). “ 一個(gè)輸入

–CALL METHOD meth( f1 = a1………fn = an ) . “N個(gè)輸入

類的繼承

clipboard.png

CLASS LCL_SUB DEFINITION INHERITING FROM LCL_COOMPT."類的繼承

ENDCLASS.   

子類LCL_SUB中沒(méi)有任何數(shù)據(jù);都是繼承來(lái)自父類LCL_COMPT。

clipboard.png

子類可以繼承  publicsection,protectedsection的內(nèi)容

privatesection的內(nèi)容不可以被繼承。

clipboard.png

方法中參數(shù)的使用

定義:一個(gè)函數(shù)導(dǎo)入?yún)?shù)  一個(gè)函數(shù)傳出參數(shù)

clipboard.png

實(shí)現(xiàn)(gv_change在這里知識(shí)起到一個(gè)橋梁的的作用)

clipboard.png

帶參函數(shù)的調(diào)用

clipboard.png

多個(gè)參數(shù)的函數(shù)調(diào)用

clipboard.png

clipboard.png

clipboard.png

返回類傳遞數(shù)值   即返回值 切 只有一個(gè)

clipboard.png

定義

clipboard.png

實(shí)現(xiàn)

clipboard.png

調(diào)用

clipboard.png

常量  隨意用什么訪問(wèn)   類=>常量名   或者 對(duì)象->常量名  進(jìn)行 訪問(wèn)

clipboard.png

clipboard.png

訪問(wèn)常量

returning調(diào)用的特點(diǎn)

clipboard.png

clipboard.png

clipboard.png

異常

clipboard.png

clipboard.png

clipboard.png

構(gòu)造方法

使用 METHODS  CONSTRUCTOR . 

每個(gè)類只能有一個(gè)構(gòu)造方法,在CREATE OBJECT語(yǔ)句中自動(dòng)調(diào)用構(gòu)造方法

使用幾個(gè)create object就調(diào)用幾次構(gòu)造方法。

·什么時(shí)候使用構(gòu)造方法

–需要分配(外部)資源

–需要初始化一些不能用DATA 語(yǔ)句的VALUE 指定的屬性值

–需要修改靜態(tài)屬性

–通常不能顯式的調(diào)用構(gòu)造器

構(gòu)造器方法

clipboard.png

參數(shù)要在carete object的時(shí)候?qū)搿?/p>

clipboard.png

clipboard.png

·什么是類的繼承?

–繼承的本質(zhì)是代碼重用。當(dāng)要構(gòu)造一個(gè)新類時(shí),無(wú)需從零開(kāi)始,可以參考一個(gè)已有類,再其基礎(chǔ)上簡(jiǎn)歷一個(gè)新類。

–參考類:基類/父類。新建類:派生類/子類

–派生類可以繼承基類所有的屬性和方法,并可以在此基礎(chǔ)上添加新的特性

·語(yǔ)句

–CLASSDEFINITION INHERITING FROM.

·多態(tài)性類繼承的實(shí)現(xiàn)

–由于每個(gè)派生類的屬性不同,相同的基類對(duì)象在不同的派生類中需要以不同的方式來(lái)表現(xiàn),因此提供多態(tài)的概念。

–在派生類中定義和基類相同的接口,但是可以使用不同的代碼來(lái)實(shí)現(xiàn)。

·語(yǔ)句

–METHOD 父類方法名REDEFINITION .對(duì)父類已有方法的重定義“

–在派生類中使用基類的方法(子類調(diào)用父類方法的語(yǔ)句),

使用SUPER:CALL METHOD SUPER->.

clipboard.png

–重載方法,使用ME:CALL METHOD ME->.

調(diào)用子類的方法   以下兩種調(diào)用效果類似

clipboard.png

clipboard.png

抽象類以及方法

抽象類

·CLASSDEFINITION ABSTRACT .  / ENDCLASS .

clipboard.png

抽象類的聲明定義

·抽象方法

–僅包含方法定義,但沒(méi)有具體實(shí)現(xiàn)的方法,需要通過(guò)派生類來(lái)實(shí)現(xiàn)

·METHODSABSTRACT .

clipboard.png

clipboard.png

抽象類中可以定義實(shí)例方法,并實(shí)現(xiàn);

也可以定義抽象方法,但是抽象方法只需定義不需要實(shí)現(xiàn)。

非抽象類中不能定義抽象方法

如果需要實(shí)現(xiàn)抽象類中的抽象方法;則需要一個(gè)類繼承抽象類,并且重新定義抽象方法然后實(shí)現(xiàn)。

clipboard.png

接口

–和抽象類相似,定義了一些未實(shí)現(xiàn)的屬性和方法,所有繼承它的類都繼承這些成員

–不需要方法實(shí)現(xiàn),不能直接實(shí)例化

–接口所有成員都是抽象的

–接口成員一般是公有的

–接口中不能含有構(gòu)造方法

clipboard.png

接口的定義;在類之外

clipboard.png

在類中的publicsection中將接口寫進(jìn)去

在類的實(shí)現(xiàn)(implementation)中寫出接口中包含的方法的實(shí)現(xiàn)。

clipboard.png

METHOD 接口名~(波浪線)方法名.

ENDMETHOD.

"接口中的方法調(diào)用

clipboard.png

CALL METHOD  對(duì)象名->接口~方法

若在接口中定義的方法名太長(zhǎng),可以在類定義中的接口中給方法取別名

clipboard.png

ALIASES 別名 FOR 接口名~原方法名.;;在取別名之后,

調(diào)用方法就可以直接對(duì)象名->方法別名。

不需要加上   接口~

·事件(EVENT)(事件的發(fā)生至少需要兩個(gè)類)

clipboard.png

·事件類型分為4種

–定義在類中的:實(shí)例事件,靜態(tài)事件

–定義在接口中的:實(shí)例事件,靜態(tài)事件

·對(duì)于實(shí)例事件,注冊(cè)語(yǔ)句必須使用FOR指定注冊(cè)對(duì)象

–… FOR ref .

–… FOR ALL INSTANCES(注冊(cè)所有可以觸發(fā)該事件的實(shí)例,包括尚未被創(chuàng)建的實(shí)例)

·注冊(cè)靜態(tài)事件,不需加FOR后綴,自動(dòng)應(yīng)用于整個(gè)類

·

·當(dāng)程序執(zhí)行到RAISE EVENT語(yǔ)句后,所有已注冊(cè)的處理方法都將在下一個(gè)語(yǔ)句之前被處理。處理方法按照其在系統(tǒng)內(nèi)部注冊(cè)的順序被執(zhí)行。為避免無(wú)限循環(huán),目前事件處理最多不能超過(guò)64級(jí)嵌套。

clipboard.png

clipboard.png

創(chuàng)建方法  查找 數(shù)據(jù)  若查到就觸發(fā)事件輸出數(shù)據(jù)

clipboard.png

觸發(fā)事件:

RAISE EVENT事件名

clipboard.png

創(chuàng)建一個(gè)新類;方法綁定事件;METHODS  名 FOR EVENT  名 OF  類名  導(dǎo)入/導(dǎo)出  數(shù)據(jù);;并在實(shí)現(xiàn)中寫出方法功能

注冊(cè)是針對(duì) 對(duì)象 注冊(cè)

clipboard.png

新類創(chuàng)建對(duì)象;;并注冊(cè)事件   SET  HANDLER   對(duì)象名-->方法名  FOR  上一對(duì)象名

附錄:代碼

REPORT ZWEN_0804.

*----------------------------------------------------------------------*

*       INTERFACE INTER IMPLEMENTATION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

INTERFACE INTER."接口

METHODS WRITE_INTER.

ENDINTERFACE.                    "INTER IMPLEMENTATION

*----------------------------------------------------------------------*

*       CLASS LCL_COMPT DEFINITION

*----------------------------------------------------------------------*

*定義類中的項(xiàng)目(屬性;方法;事件)

*----------------------------------------------------------------------*

CLASS LCL_COMPT  DEFINITION.

* 如 DATA ------

* 如 MESSAGE ------

* 如 METHODS ------

PUBLIC SECTION."公有

"實(shí)例屬性

DATA GV_CHAR(10) TYPE C VALUE '實(shí)例CHAR變量'.

DATA GS_SCHOOL TYPE ZWEN_TEST_SCHOOL.

"實(shí)例方法

METHODS WRITE_CHAR.

TYPES GTY_CHAR10(10) TYPE C .

TYPES GTY_CHAR5(10) TYPE C .

METHODS SET_VALUE IMPORTING P_VALUE TYPE GTY_CHAR10."對(duì)gv——change賦值

METHODS GET_VALUE EXPORTING E_VALUE TYPE GTY_CHAR10."得到gv——change賦值

METHODS CON_VALUE IMPORTING I_VALUE1 TYPE GTY_CHAR5

I_VALUE2 TYPE GTY_CHAR5

I_VALUE3 TYPE GTY_CHAR5

EXPORTING R_SUBRC TYPE GTY_CHAR5.

CLASS-DATA GV_CHANGE(10) TYPE C.

DATA GV_CONCATENATE TYPE GTY_CHAR10..

"靜態(tài)屬性

CLASS-DATA GV_STATIC(20) TYPE C VALUE '靜態(tài)屬性'.

"靜態(tài)方法

CLASS-METHODS WRITE_STATIC.

"接口

INTERFACES INTER.

METHODS GET_DATA IMPORTING P_SCHOOL LIKE GS_SCHOOL-ZSCHOOL.

"事件    傳出

EVENTS DATA_EXIST EXPORTING VALUE(PS_SCHOOL) LIKE GS_SCHOOL.

PROTECTED SECTION."保護(hù)

CLASS-DATA  GV_SUPER   TYPE C VALUE 'fuleishuxing'.

ENDCLASS .                    "LCL_COMPT DEFINITION

*----------------------------------------------------------------------*

*       CLASS LCL_HANDLER DEFINITION

*----------------------------------------------------------------------*

*事件接收器

*----------------------------------------------------------------------*

CLASS LCL_HANDLER DEFINITION.

PUBLIC SECTION.

METHODS WRITE_DATA FOR EVENT DATA_EXIST OF LCL_COMPT

IMPORTING PS_SCHOOL."方法綁定事件

ENDCLASS.                    "LCL_HANDLER DEFINITION

*----------------------------------------------------------------------*

*       CLASS LCL_HANDLER IMPLEMENTATION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS LCL_HANDLER IMPLEMENTATION.

METHOD WRITE_DATA.

WRITE:/ PS_SCHOOL-ZSCHOOL,PS_SCHOOL-ZSNAME.

ENDMETHOD.                    "WRITE_DATA

ENDCLASS.                    "LCL_HANDLER IMPLEMENTATION

*----------------------------------------------------------------------*

*       CLASS LCL_COPMT IMPLEMENTATION

*----------------------------------------------------------------------*

*定義類中方法的內(nèi)容;

*----------------------------------------------------------------------*

CLASS LCL_COMPT IMPLEMENTATION.

"實(shí)現(xiàn)實(shí)例方法

METHOD WRITE_CHAR.

WRITE:/  '調(diào)用方法:', GV_CHAR.

ENDMETHOD.                    "WRITE_CHAR

METHOD SET_VALUE.

GV_CHANGE = P_VALUE.

ENDMETHOD.                    "SET_VALUE

METHOD GET_VALUE.

E_VALUE =   GV_CHANGE.

ENDMETHOD.                    "GET_VALUE

*實(shí)現(xiàn)靜態(tài)方法

METHOD WRITE_STATIC.

WRITE:/   '靜態(tài)方法',GV_STATIC.

ENDMETHOD.                    "WRITE_STATIC

METHOD CON_VALUE .

CONCATENATE I_VALUE1 I_VALUE2 I_VALUE3 INTO  GV_CONCATENATE.

IF SY-SUBRC = 0.

R_SUBRC = 'S'.

ELSE.

R_SUBRC = 'E'.

ENDIF.

ENDMETHOD.                    "CON_VALUE

METHOD INTER~WRITE_INTER.

WRITE:/ '接口中的方法'.

ENDMETHOD.                    "WRITR_INTER

METHOD GET_DATA.

SELECT SINGLE * FROM ZWEN_TEST_SCHOOL

INTO CORRESPONDING FIELDS OF GS_SCHOOL

WHERE ZSCHOOL = P_SCHOOL.

IF SY-SUBRC = 0."成功則輸出數(shù)據(jù)

RAISE EVENT DATA_EXIST

EXPORTING

PS_SCHOOL = GS_SCHOOL."同方向

ELSE."失敗

WRITE:/ '取數(shù)失敗'.

ENDIF.

ENDMETHOD.                    "GET_DATA

ENDCLASS.                    "LCL_COPMT IMPLEMENTATION

*----------------------------------------------------------------------*

*       CLASS LCL_SUB DEFINITION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS LCL_SUB DEFINITION INHERITING FROM LCL_COMPT."類的繼承

PUBLIC SECTION.

METHODS WRITE_SUPER.

ENDCLASS.                    "LCL_SUB DEFINITION

*----------------------------------------------------------------------*

*       CLASS LCL_SUB IMPLEMENTATION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS LCL_SUB IMPLEMENTATION.

METHOD WRITE_SUPER.

WRITE:/ '子類輸出方法',GV_CHAR."繼承父類publicsection屬性

WRITE:/ '子類輸出方法',GV_SUPER."繼承父類PROTECTEDsection屬性

ENDMETHOD.                    "WRITE_SUPER

ENDCLASS.                    "LCL_SUB IMPLEMENTATION

"聲明一個(gè)對(duì)象

DATA: LCL_OBJECT TYPE REF TO LCL_COMPT,

LCL_OBJECT2 TYPE REF TO LCL_COMPT.

START-OF-SELECTION.

CREATE OBJECT LCL_OBJECT.

CREATE OBJECT LCL_OBJECT2.

"實(shí)例化

CREATE OBJECT LCL_OBJECT.

WRITE:/ '訪問(wèn)實(shí)例屬性', LCL_OBJECT->GV_CHAR.

"修改類中定義的變量

LCL_OBJECT->GV_CHAR = '變化1'.

"調(diào)用方法

CALL METHOD LCL_OBJECT->WRITE_CHAR.

CALL METHOD LCL_OBJECT2->WRITE_CHAR.

"靜態(tài)屬性不依附實(shí)例

WRITE:/ '訪問(wèn)靜態(tài)屬性',LCL_COMPT=>GV_STATIC.

CALL METHOD LCL_COMPT=>WRITE_STATIC."調(diào)用靜態(tài)方法

LCL_COMPT=>GV_STATIC = '修改后的靜態(tài)屬性'."修改驚濤屬性

CALL METHOD LCL_COMPT=>WRITE_STATIC.

DATA GV_DATA TYPE LCL_OBJECT->GTY_CHAR10.

"帶有參數(shù)方法的調(diào)用、

CALL METHOD LCL_OBJECT->SET_VALUE

EXPORTING

P_VALUE = '賦值操作'.

CALL METHOD LCL_OBJECT->GET_VALUE

IMPORTING

E_VALUE = GV_DATA.

WRITE :/  GV_DATA.

DATA GV_SUBRC TYPE LCL_OBJECT->GTY_CHAR10.

CALL METHOD LCL_OBJECT->CON_VALUE

EXPORTING

I_VALUE1 = 'HO'

I_VALUE2 = 'WD'

I_VALUE3 = 'CJ'

IMPORTING

R_SUBRC  = GV_SUBRC.

WRITE :/  GV_SUBRC.

"接口中的方法調(diào)用

CALL METHOD LCL_OBJECT->INTER~WRITE_INTER.

"事件的注冊(cè)及調(diào)用

DATA EVENT_HANDLER TYPE REF TO LCL_HANDLER.

CREATE OBJECT EVENT_HANDLER.

SET HANDLER EVENT_HANDLER->WRITE_DATA FOR LCL_OBJECT."注冊(cè)事件

CALL METHOD LCL_OBJECT->GET_DATA

EXPORTING

P_SCHOOL = '211'.

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多