乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      ABAP面向對象總結

       昵稱46169147 2017-08-07
      clipboard.png

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

      clipboard.png

      組件

      clipboard.png

      訪問區(qū)域;權限

      聲明項目時,要注意聲明訪問區(qū)域

      clipboard.png

      訪問實力對象,需要首先聲明一個對象。  DATA 名   TYPE REF TO  類。

      訪問實例屬性格式 對象->屬性名稱

      clipboard.png

      調用方法,如下

      clipboard.png

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

      clipboard.png

      一個類可以有多個實例,多個實例之間相對獨立,一個實例修改了值,不會影響其他實例的值。

      clipboard.png

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

      clipboard.png

      clipboard.png

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

      clipboard.png

      靜態(tài)屬性的訪問,不依附對象,直接通過類=>訪問

      clipboard.png

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

      clipboard.png

      clipboard.png

      Class構成要素

      ·構成要素的分類

      –實例組件(Instance-specific component)

      ·參照類創(chuàng)建對象時,內存中存在的項目,每次創(chuàng)建對象時都會被初始化。各個類的對象中都存在

      ·聲明方式:屬性:DATA;方法:METHODS。訪問:OBJECT->COMP

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

      ·遇到創(chuàng)建類的語句(CREATE OBJECT)開始,直到程序結束都存儲于內存中,是依賴類存在的項目。即使不創(chuàng)建對象,若已存在與內存中即可以直接使用。

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

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

      –屬性(Attributes)

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

      –方法(Method)

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

      –事件(Event)

      ·事件是沒有繼承關系的類之間可以互相調用彼此方法的特殊方法

      clipboard.png

      對象

      ·對象指的是類的實例,每個對象都有自己固有的屬性。

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

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

      –DATA    obj TYPE REF TO class.

      方法

      ·方法定義的基本語法

      –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ù)可以參考單個變量,結構,或者內表

      –CHANGING:同時作為輸入輸出接口,接口參數(shù)可以參考單個變量,結構,或者內表

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

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

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

      方法的調用

      ·當方法沒有輸出參數(shù)(EXPORTING)的時候可以通過以下方式調用:

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

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

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

      類的繼承

      clipboard.png

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

      ENDCLASS.   

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

      clipboard.png

      子類可以繼承  publicsection,protectedsection的內容

      privatesection的內容不可以被繼承。

      clipboard.png

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

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

      clipboard.png

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

      clipboard.png

      帶參函數(shù)的調用

      clipboard.png

      多個參數(shù)的函數(shù)調用

      clipboard.png

      clipboard.png

      clipboard.png

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

      clipboard.png

      定義

      clipboard.png

      實現(xiàn)

      clipboard.png

      調用

      clipboard.png

      常量  隨意用什么訪問   類=>常量名   或者 對象->常量名  進行 訪問

      clipboard.png

      clipboard.png

      訪問常量

      returning調用的特點

      clipboard.png

      clipboard.png

      clipboard.png

      異常

      clipboard.png

      clipboard.png

      clipboard.png

      構造方法

      使用 METHODS  CONSTRUCTOR . 

      每個類只能有一個構造方法,在CREATE OBJECT語句中自動調用構造方法

      使用幾個create object就調用幾次構造方法。

      ·什么時候使用構造方法

      –需要分配(外部)資源

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

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

      –通常不能顯式的調用構造器

      構造器方法

      clipboard.png

      參數(shù)要在carete object的時候導入。

      clipboard.png

      clipboard.png

      ·什么是類的繼承?

      –繼承的本質是代碼重用。當要構造一個新類時,無需從零開始,可以參考一個已有類,再其基礎上簡歷一個新類。

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

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

      ·語句

      –CLASSDEFINITION INHERITING FROM.

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

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

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

      ·語句

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

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

      使用SUPER:CALL METHOD SUPER->.

      clipboard.png

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

      調用子類的方法   以下兩種調用效果類似

      clipboard.png

      clipboard.png

      抽象類以及方法

      抽象類

      ·CLASSDEFINITION ABSTRACT .  / ENDCLASS .

      clipboard.png

      抽象類的聲明定義

      ·抽象方法

      –僅包含方法定義,但沒有具體實現(xiàn)的方法,需要通過派生類來實現(xiàn)

      ·METHODSABSTRACT .

      clipboard.png

      clipboard.png

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

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

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

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

      clipboard.png

      接口

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

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

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

      –接口成員一般是公有的

      –接口中不能含有構造方法

      clipboard.png

      接口的定義;在類之外

      clipboard.png

      在類中的publicsection中將接口寫進去

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

      clipboard.png

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

      ENDMETHOD.

      "接口中的方法調用

      clipboard.png

      CALL METHOD  對象名->接口~方法

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

      clipboard.png

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

      調用方法就可以直接對象名->方法別名。

      不需要加上   接口~

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

      clipboard.png

      ·事件類型分為4種

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

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

      ·對于實例事件,注冊語句必須使用FOR指定注冊對象

      –… FOR ref .

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

      ·注冊靜態(tài)事件,不需加FOR后綴,自動應用于整個類

      ·

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

      clipboard.png

      clipboard.png

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

      clipboard.png

      觸發(fā)事件:

      RAISE EVENT事件名

      clipboard.png

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

      注冊是針對 對象 注冊

      clipboard.png

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

      附錄:代碼

      REPORT ZWEN_0804.

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

      *       INTERFACE INTER IMPLEMENTATION

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

      *

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

      INTERFACE INTER."接口

      METHODS WRITE_INTER.

      ENDINTERFACE.                    "INTER IMPLEMENTATION

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

      *       CLASS LCL_COMPT DEFINITION

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

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

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

      CLASS LCL_COMPT  DEFINITION.

      * 如 DATA ------

      * 如 MESSAGE ------

      * 如 METHODS ------

      PUBLIC SECTION."公有

      "實例屬性

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

      DATA GS_SCHOOL TYPE ZWEN_TEST_SCHOOL.

      "實例方法

      METHODS WRITE_CHAR.

      TYPES GTY_CHAR10(10) TYPE C .

      TYPES GTY_CHAR5(10) TYPE C .

      METHODS SET_VALUE IMPORTING P_VALUE TYPE GTY_CHAR10."對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."保護

      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

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

      *定義類中方法的內容;

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

      CLASS LCL_COMPT IMPLEMENTATION.

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

      METHOD WRITE_CHAR.

      WRITE:/  '調用方法:', 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

      *實現(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

      "聲明一個對象

      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.

      "實例化

      CREATE OBJECT LCL_OBJECT.

      WRITE:/ '訪問實例屬性', LCL_OBJECT->GV_CHAR.

      "修改類中定義的變量

      LCL_OBJECT->GV_CHAR = '變化1'.

      "調用方法

      CALL METHOD LCL_OBJECT->WRITE_CHAR.

      CALL METHOD LCL_OBJECT2->WRITE_CHAR.

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

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

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

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

      CALL METHOD LCL_COMPT=>WRITE_STATIC.

      DATA GV_DATA TYPE LCL_OBJECT->GTY_CHAR10.

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

      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.

      "接口中的方法調用

      CALL METHOD LCL_OBJECT->INTER~WRITE_INTER.

      "事件的注冊及調用

      DATA EVENT_HANDLER TYPE REF TO LCL_HANDLER.

      CREATE OBJECT EVENT_HANDLER.

      SET HANDLER EVENT_HANDLER->WRITE_DATA FOR LCL_OBJECT."注冊事件

      CALL METHOD LCL_OBJECT->GET_DATA

      EXPORTING

      P_SCHOOL = '211'.

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多