Liejimas ABAP programoje

a1 KLASĖS APIBRĖŽIMAS.
 VIEŠASIS SKYRIUS.
 DUOMENYS: num1 TYPE i VALUE 100.
 METODAI:m1.
 GALIMYBĖ.
 a1 KLASĖS ĮGYVENDINIMAS.
 METODAS m1.
 RAŠYKITE: 'a1:',num1.
 PABAIGOS METODAS.
 GALIMYBĖ.
 b1 KLASĖ APIBRĖŽIMAS PAVELDĖJIMAS IŠ a1.
 VIEŠASIS SKYRIUS.
 METODAI:m2, m1 PERŽIŪRĖTI.
 GALIMYBĖ.
 b1 KLASĖS ĮGYVENDINIMAS.
 METODAS m1.
 skaičius1 = skaičius1.
 RAŠYKITE: 'b1:',num1.
 PABAIGOS METODAS.
 METODAS m2.
 PARAŠYK: „M2 b1 klasėje“.
 PABAIGOS METODAS.
 GALIMYBĖ.
 ATRANKOS PRADŽIA.
 DUOMENYS: a TIPO NUORODA Į a1.
 DUOMENYS: b TIPO NUORODA Į b1.
 *duomenys: c tipo REF TO c1.
 ****************************************************** ************** KURTI OBJEKTĄ b.
 a = b.  "CALL METODAS a->m1( ).
 *skambinkite METHOD a->m2( ).  Negalime pasiekti savo poklasių metodų naudodami super klasės nuorod.
 NAUJA LINIJA.
 b ?= a.  " žemyn liejimo CALL METODAS b->m1( ).
 NAUJA LINIJA.
 SKAMBINIMO METODAS b->m2( ).
 ****************************************************** *************** " klaida null ref sukurti OBJEKTĄ a.
 b ?= a.  "Downcasting vis dar suteikia iškvietimą METODAS b->m1( ).
 ****************************************************** ************** KURTI OBJEKTĄ a.
 BANDYTI.
 b ?= a.  "bandėte naudoti "NULL" objekto nuorodos išrašymą CATCH cx_sy_move_cast_error.
 SKAMBINIMO METODAS b->m1( ).
 PABAIGA.
 ****************************************************** ************** KURTI OBJEKTĄ a.
 KURTI OBJEKTĄ b.
 BANDYTI.
 b ?= a.
 CATCH cx_sy_move_cast_error.
 SKAMBINIMO METODAS b->m1( ).
 skambinkite METODAS b->m2( ).
 PABAIGA.
 KLASĖ lcl_shape APIBRĖŽIMAS.
 VIEŠASIS SKYRIUS.
 METODAI piešti.
 GALIMYBĖ.
 KLASĖ lcl_circle APIBRĖŽIMAS PAVELDĖJAMAS IŠ lcl_shape.
 VIEŠASIS SKYRIUS.
 METODAI: nubrėžkite REFENITION, calc_area.
 GALIMYBĖ.
 KLASĖ lcl_shape ĮGYVENDINIMAS.
 METODAS piešti.
 RAŠYKITE :/ 'Bet kokios formos piešimas'.
 PABAIGOS METODAS.
 GALIMYBĖ.
 KLASĖ lcl_circle ĮGYVENDINIMAS.
 METODAS piešti.
 RAŠYKITE :/ 'Konkrečios formos piešimas: apskritimas'.
 PABAIGOS METODAS.
 METODAS calc_area.
 WRITE :/ 'Krcle plotas = 2iiR'.
 PABAIGOS METODAS.
 GALIMYBĖ.
 ATRANKOS PRADŽIA.
 DUOMENYS: o_cir TYPE REF Į lcl_circle.
 KURTI OBJEKTĄ o_cir.
 SKAMBINIMO METODAS o_cir->draw( ).  " iškviečia poklasį Draw() metodą CALL METHOD o_cir->calc_area().
 ULINE.
 "--------- Siauras atvaizdas (Upcast)---------------" DUOMENYS: o_shp TIPAS NUORODA Į lcl_shape.
 o_shp = o_cir.  " Siauras cast(Upcast) CALL METHOD o_shp->draw( ).  " iškviečia poklasę Draw() metodą "kviečiame METHOD o_shp->calc_area( ) .  " kompiliavimo klaida ULINE.
 "---------- Išplečiamas perdavimas (žemyn) -----------" DUOMENYS: o_cir1 TIPAS NUORODA Į lcl_circle.
 " o_cir1 = o_shp.  " kompiliavimo klaida o_cir1 ?= o_shp.  " Išplečiamas Cast(Downcast) CALL METHOD o_cir1->draw( ).  " iškviečia poklasį Draw() metodą CALL METHOD o_cir1->calc_area( ).
 a1 KLASĖS APIBRĖŽIMAS.
 VIEŠASIS SKYRIUS.
 DUOMENYS: num1 TYPE i VALUE 100.
 METODAI:m1.
 GALIMYBĖ.
 a1 KLASĖS ĮGYVENDINIMAS.
 METODAS m1.
 RAŠYKITE: 'a1:',num1.
 PABAIGOS METODAS.
 GALIMYBĖ.
 b1 KLASĖ APIBRĖŽIMAS PAVELDĖJIMAS IŠ a1.
 VIEŠASIS SKYRIUS.
 METODAI:m2, m1 PERŽIŪRĖTI.
 GALIMYBĖ.
 b1 KLASĖS ĮGYVENDINIMAS.
 METODAS m1.
 skaičius1 = skaičius1.
 RAŠYKITE: 'b1:',num1.
 PABAIGOS METODAS.
 METODAS m2.
 PARAŠYK: „M2 b1 klasėje“.
 PABAIGOS METODAS.
 GALIMYBĖ.
 ATRANKOS PRADŽIA.
 DUOMENYS: pirminis TIPAS NUORODA Į a1.
 DUOMENYS: vaikas TIPAS NUORODA Į b1.
 *duomenys: c tipo REF TO c1.
 ****************************************************** ************** KURTI OBJEKTĄ vaiką.
 tėvas = vaikas.  "CALL METHOD pakeitimas tėvas->m1( ).
 SKAMBINIMO METODAS vaikas->m1( ).
 SKAMBINIMO METODAS vaikas->m2( ).
 *skambinkite METHOD a->m2( ).  Negalime pasiekti savo poklasių metodų naudodami super klasės nuorod.
 NAUJA LINIJA.
 vaikas?= tėvas.  " down casting CALL METHOD vaikas->m1( ).
 NAUJA LINIJA.
 SKAMBINIMO METODAS vaikas->m2( ).
 ****************************************************** **************** *" klaida null ref *sukurti OBJEKTĄ a.
 *b ?= a.  "Downcasting vis dar savo davimo dump *skambinkite METHOD b->m1( ).
 ****************************************************** **************** * KURTI OBJEKTĄ a.
 BANDYTI.
 b ?= a.  "bandėte naudoti "NULL" objekto nuorodos išrašymą CATCH cx_sy_move_cast_error.
 SKAMBINIMO METODAS b->m1( ).
 PABAIGA.
 ****************************************************** **************** * KURTI OBJEKTĄ a.
 KURTI OBJEKTĄ b.
 BANDYTI.
 b ?= a.
 CATCH cx_sy_move_cast_error.
 SKAMBINIMO METODAS b->m1( ).
 skambinkite METODAS b->m2( ).
 PABAIGA.
 ******* Unikalios reikšmės******************* DUOMENYS: lv_string TYPE eilutė, lv_string2 TYPE eilutė, lv_string_final TYPE eilutė.
 TIPAI: TYPE OF TYPE, Auth TYPE c, END OF ty_data.
 DUOMENYS: 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'.
 SKILTAS lv_string AT ',' Į LENTELĘ lt_user.
 PASKALSTI lv_string2 AT ',' Į LENTELĘ lt_user2.
 LOOP AT lt_user2 PRISKIRTI LAUKĄ-SIMBOLĮ( ).
 ĮDĖTI Į LENTELĘ lt_vartotojas.
 ENDLOOP.
 RŪŠIUOTI lt_vartotoją PAGAL autentifikavimą.
 IŠTRINTI GRETIUS DUBLIKATAS IŠ lt_user PALYGINANT auth.
 JEI sy-subrc = 0.
 LOOP AT lt_user PASKYRIMAS LAUKO SIMBOLIS( ).
 JEI lv_string_final YRA INICIAL.
 lv_string_final = -aut.
 KITAS.
 CONCATENATE lv_string_final -auth INTO lv_string_final ATSKIRTA ','.
 ENDIF.
 ENDLOOP.
 ENDIF.

 

Palikite komentarą

Ši svetainė naudoja "Akismet", kad sumažintų šlamštą. Sužinokite, kaip apdorojamas jūsų komentaras.