Առաջաբան գրել - Այս գրառումը մաս է կազմում 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.
0 Comments