Քասթինգ ABAP ծրագրում

ԴԱՍ ա1 ՍԱՀՄԱՆՈՒՄ.
 ՀԱՆՐԱՅԻՆ ԲԱԺԻՆ.
 ՏՎՅԱԼՆԵՐ՝ num1 ՏԵՍԱԿԸ i ԱՐԺԵՔԸ 100:
 ՄԵԹՈԴՆԵՐ՝ մ1.
 ENDCLASS.
 ԴԱՍ ա1 ԻՐԱԿԱՆԱՑՈՒՄ.
 ՄԵԹՈԴ m1.
 ԳՐԵԼ՝ 'a1:',num1:
 ՎԵՐՋ ՄԵԹՈԴ.
 ENDCLASS.
 ԴԱՍ b1 ՍԱՀՄԱՆՈՒՄ ԺԱՌԱՆԳԱՆՈՒՄ Ա1-ԻՑ.
 ՀԱՆՐԱՅԻՆ ԲԱԺԻՆ.
 ՄԵԹՈԴՆԵՐ:m2, m1 ՎԵՐԱՍԱՀՄԱՆՈՒՄ.
 ENDCLASS.
 Բ1 ԴԱՍԻ ԻՐԱԿԱՆԱՑՈՒՄ.
 ՄԵԹՈԴ m1.
 num1 = num1:
 ԳՐԵԼ՝ 'b1:',num1:
 ՎԵՐՋ ՄԵԹՈԴ.
 ՄԵԹՈԴ m2.
 ԳՐԵԼ՝ «M2 b1 դասարանում»:
 ՎԵՐՋ ՄԵԹՈԴ.
 ENDCLASS.
 ԸՆՏՐՈՒԹՅԱՆ ՄԵԿՆԱՐԿ.
 ՏՎՅԱԼՆԵՐ. a1-ի ՏԵՍԱԿ ՀԱՂՈՐԴՈՒՄ:
 ՏՎՅԱԼՆԵՐ. b ՏԵՍԱԿԵՔ ՀԱՂՈՐԴՈՒՄԸ Բ1-ին:
 *տվյալներ՝ c տեսակը REF TO c1:
 ************************************************** ************** ՍՏԵՂԾԵԼ ՕԲՅԵԿՏ բ.
 ա = բ.  « upcasting CALL METHOD a->m1( ).
 *կոչել ՄԵԹՈԴ a->m2( ).  «Մենք չենք կարող մուտք գործել սեփական ենթադասի մեթոդները, օգտագործելով super class ref.
 NEW-LINE.
 բ ?= ա.  « ներքեւ ձուլման ԿԱՆՉԻ ՄԵԹՈԴ b->m1( ).
 NEW-LINE.
 ԿԱՆՉԻ ՄԵԹՈԴ b->m2( ).
 ************************************************** ************** " error null ref create OBJECT a.
 բ ?= ա.  «down casting still its give dump call METHOD b->m1( ).
 ************************************************** ************** ՍՏԵՂԾԵԼ ՕԲՅԵԿՏ ա.
 ՓՈՐՁԵԼ։
 բ ?= ա.  «Դուք փորձեցիք օգտագործել «NULL» օբյեկտի հղման աղբարկղ CATCH cx_sy_move_cast_error:
 ԿԱՆՉԻ ՄԵԹՈԴ b->m1( ).
 ՎԵՐՋ.
 ************************************************** ************** ՍՏԵՂԾԵԼ ՕԲՅԵԿՏ ա.
 ՍՏԵՂԾԵԼ ՕԲՅԵԿՏ բ.
 ՓՈՐՁԵԼ։
 բ ?= ա.
 CATCH cx_sy_move_cast_error.
 ԿԱՆՉԻ ՄԵԹՈԴ b->m1( ).
 զանգահարել ՄԵԹՈԴ b->m2( ).
 ՎԵՐՋ.
 CLASS lcl_shape ՍԱՀՄԱՆՈՒՄ.
 ՀԱՆՐԱՅԻՆ ԲԱԺԻՆ.
 ՄԵԹՈԴՆԵՐ ոչ-ոքի.
 ENDCLASS.
 CLASS lcl_circle ՍԱՀՄԱՆՈՒՄ ԺԱՌԱՆԳԱՆՈՂ lcl_shape-ից:
 ՀԱՆՐԱՅԻՆ ԲԱԺԻՆ.
 ՄԵԹՈԴՆԵՐ. նկարել ՎԵՐԱՍԱՀՄԱՆՈՒՄ, calc_area:
 ENDCLASS.
 CLASS lcl_shape IMPLEMENTATION:
 ՄԵԹՈԴ խաղարկություն.
 ԳՐԵՔ :/ «Ցանկացած ձևի նկարում»:
 ՎԵՐՋ ՄԵԹՈԴ.
 ENDCLASS.
 CLASS lcl_circle ԻՐԱԿԱՆԱՑՈՒՄ.
 ՄԵԹՈԴ խաղարկություն.
 ԳՐԵՔ :/ «Նկարում ենք կոնկրետ ձև․ շրջան»։
 ՎԵՐՋ ՄԵԹՈԴ.
 ՄԵԹՈԴ calc_area.
 ԳՐԵՔ՝/ «Crcle-ի տարածք = 2iiR»:
 ՎԵՐՋ ՄԵԹՈԴ.
 ENDCLASS.
 ԸՆՏՐՈՒԹՅԱՆ ՄԵԿՆԱՐԿ.
 ՏՎՅԱԼՆԵՐ. o_cir ՏԵՍԱԿԵՔ REF TO lcl_circle:
 ՍՏԵՂԾԵԼ ՕԲՅԵԿՏ o_cir.
 ԿԱՆՉԻ ՄԵԹՈԴ o_cir->draw( ):  « կանչում է ենթադաս Draw() մեթոդը CALL METHOD o_cir->calc_area( ):
 ULINE.
 «--------- Նեղ թողարկում (Upcast)----------------» ՏՎՅԱԼՆԵՐ.
 o_shp = o_cir.  « Նեղ հեռարձակում (Upcast) ԿԱՆՉԻ ՄԵԹՈԴ o_shp->draw( ):  " կանչում է ենթադասի Draw() մեթոդը "call METHOD o_shp->calc_area( ) :  Կազմման սխալ ULINE:
 «---------- Ընդլայնվում է հեռարձակումը (ներքև) -----------» ՏՎՅԱԼՆԵՐԸ.
 « o_cir1 = o_shp.  « Կոմպլիլացիայի սխալ o_cir1 ?= o_shp.  « Ընդլայնելով Cast(Downcast) CALL METHOD o_cir1->draw( ):  « կանչում է ենթադաս Draw() մեթոդը CALL METHOD o_cir1->calc_area( ):
 ԴԱՍ ա1 ՍԱՀՄԱՆՈՒՄ.
 ՀԱՆՐԱՅԻՆ ԲԱԺԻՆ.
 ՏՎՅԱԼՆԵՐ՝ num1 ՏԵՍԱԿԸ i ԱՐԺԵՔԸ 100:
 ՄԵԹՈԴՆԵՐ՝ մ1.
 ENDCLASS.
 ԴԱՍ ա1 ԻՐԱԿԱՆԱՑՈՒՄ.
 ՄԵԹՈԴ m1.
 ԳՐԵԼ՝ 'a1:',num1:
 ՎԵՐՋ ՄԵԹՈԴ.
 ENDCLASS.
 ԴԱՍ b1 ՍԱՀՄԱՆՈՒՄ ԺԱՌԱՆԳԱՆՈՒՄ Ա1-ԻՑ.
 ՀԱՆՐԱՅԻՆ ԲԱԺԻՆ.
 ՄԵԹՈԴՆԵՐ:m2, m1 ՎԵՐԱՍԱՀՄԱՆՈՒՄ.
 ENDCLASS.
 Բ1 ԴԱՍԻ ԻՐԱԿԱՆԱՑՈՒՄ.
 ՄԵԹՈԴ m1.
 num1 = num1:
 ԳՐԵԼ՝ 'b1:',num1:
 ՎԵՐՋ ՄԵԹՈԴ.
 ՄԵԹՈԴ m2.
 ԳՐԵԼ՝ «M2 b1 դասարանում»:
 ՎԵՐՋ ՄԵԹՈԴ.
 ENDCLASS.
 ԸՆՏՐՈՒԹՅԱՆ ՄԵԿՆԱՐԿ.
 ՏՎՅԱԼՆԵՐ. ծնողի ՏԵՍԱԿԸ ՀԱՆԴԻՊՈՒՄ Է a1-ին:
 ՏՎՅԱԼՆԵՐ. երեխայի ՏԵՍԱԿԸ ՀԱՍՏԱՏԵԼ b1-ին:
 *տվյալներ՝ c տեսակը REF TO c1:
 ************************************************** ************** ՍՏԵՂԾԵԼ ՕԲՅԵԿՏ երեխա.
 ծնող = երեխա:  «upcasting CALL METHOD մայր->m1( ).
 ԿԱՆՉԻ ՄԵԹՈԴ երեխա->m1( ).
 ԿԱՆՉԻ ՄԵԹՈԴ երեխա->m2( ).
 *կոչել ՄԵԹՈԴ a->m2( ).  «Մենք չենք կարող մուտք գործել սեփական ենթադասի մեթոդները, օգտագործելով super class ref.
 NEW-LINE.
 երեխա ?= ծնող.  « down casting CALL METHOD երեխա->m1( ).
 NEW-LINE.
 ԿԱՆՉԻ ՄԵԹՈԴ երեխա->m2( ).
 ************************************************** **************** *" error null ref *create OBJECT a.
 *բ ?= ա.  «down casting still its give dump *call METHOD b->m1( ).
 ************************************************** ************* * ՍՏԵՂԾԵԼ ՕԲՅԵԿՏ ա.
 ՓՈՐՁԵԼ։
 բ ?= ա.  «Դուք փորձեցիք օգտագործել «NULL» օբյեկտի հղման աղբարկղ CATCH cx_sy_move_cast_error:
 ԿԱՆՉԻ ՄԵԹՈԴ b->m1( ).
 ՎԵՐՋ.
 ************************************************** ************* * ՍՏԵՂԾԵԼ ՕԲՅԵԿՏ ա.
 ՍՏԵՂԾԵԼ ՕԲՅԵԿՏ բ.
 ՓՈՐՁԵԼ։
 բ ?= ա.
 CATCH cx_sy_move_cast_error.
 ԿԱՆՉԻ ՄԵԹՈԴ b->m1( ).
 զանգահարել ՄԵԹՈԴ b->m2( ).
 ՎԵՐՋ.
 ******** Եզակի արժեքներ******************** ՏՎՅԱԼՆԵՐ. lv_string TYPE տող, lv_string2 TYPE տող, lv_string_final TYPE տող:
 ՏԵՍԱԿՆԵՐԸ՝ ty_data-ի ՍԿԶԲԸ, TYPE c-ի սկիզբը, ty_data-ի վերջը:
 ՏՎՅԱԼՆԵՐ՝ ls_user TYPE ty_data, ls_user2 TYPE ty_data, lt_user2 TYPE TABLE OF ty_data, lt_user TYPE TABLE OF ty_data:
 lv_string = 'a,b,c,a':
 lv_string2 = 'd,b,c,a':
 SPLIT lv_string AT ',' INTO TABLE lt_user:
 SPLIT lv_string2 AT ',' INTO TABLE lt_user2:
 LOOP AT lt_user2 ՀԱՍՏԱՏԵԼՈՎ ԴԱՇՏ-ՍԻՄԲՈԼ ( ):
 ՆԵՐԴՐԵԼ ՍԵՂԱՆԻ ՄԵՋ lt_user.
 ENDLOOP.
 SORT lt_user BY auth.
 Ջնջել Կից Կրկնօրինակները lt_user-ից՝ ՀԱՄԵՄԱՏԵԼՈՎ auth.
 ԵԹԵ sy-subrc = 0:
 LOOP AT lt_user ASSIGNING FIELD-SYMBOL ( ):
 ԵԹԵ lv_string_final-ը ՍԿԶԲՆԱԿԱՆ Է:
 lv_string_final = - հեղինակություն
 ԱՅԼՍ.
 CONCATENATE lv_string_final -auth INTO lv_string_final SEPARATED BY ','-ով:
 ENDIF.
 ENDLOOP.
 ENDIF.

 

Թողնել մեկնաբանություն

Այս կայքը օգտագործում է Akismet- ը սպամի նվազեցման համար: Իմացեք, թե ինչպես է ձեր տվյալները մշակվում.