ABAP программасында кастинг

КЛАСС a1 АНЫКТАМАСЫ.
 КООМДУК БӨЛҮМ.
 МААЛЫМАТ: num1 ТИП i БААЛУУ 100.
 ЫКМАЛАР: m1.
 ENDCLASS.
 КЛАСС a1 ИШКЕ АШЫРУУ.
 МЕТООД m1.
 ЖАЗУУ: 'a1:',num1.
 ENDMETHOD.
 ENDCLASS.
 b1 КЛАССЫНЫН АНЫКТАМАСЫ a1ден мурастоо.
 КООМДУК БӨЛҮМ.
 ЫКМАЛАР:м2, m1 КАЙРА АНЫКТОО.
 ENDCLASS.
 КЛАСС b1 ИШКЕ АШЫРУУ.
 МЕТООД m1.
 num1 = num1.
 ЖАЗУУ: 'b1:',num1.
 ENDMETHOD.
 МЕТООД m2.
 ЖАЗГЫЛА: «Б2 классындагы М1».
 ENDMETHOD.
 ENDCLASS.
 БАШТАЛУУ.
 МААЛЫМАТ: a1 ТИП РЕФ.
 МААЛЫМАТ: b TYPE REF TO b1.
 *маалыматтар: c түрү REF TO c1.
 ************************************************* ************** ОБЪЕКТИ ТҮЗҮҮ б.
 a = b.  "ЧАКЫРУУ METHOD a->m1( ).
 *чалуу METHOD a->m2( ).  "Биз супер класстын реф. жардамы менен өзүбүздүн субкласс ыкмаларына кире албайбыз.
 ЖАҢЫ СЫЗЫК.
 b ?= a.  " ылдый таштоо ЧАКЫРУУ METHOD b->m1( ).
 ЖАҢЫ СЫЗЫК.
 ЧАКЫРУУ МЕТООД b->m2( ).
 ************************************************* *************** " ката null ref түзүү OBJECT a.
 b ?= a.  "Төмөн куюу дагы эле анын демп чалуу METHOD b->m1( ).
 ************************************************* **************** ОБЪЕКТИ ТҮЗҮҮ a.
 АРАКЕТ КӨРҮҢҮЗ.
 b ?= a.  "Сиз CATCH cx_sy_move_cast_error" NULL' объекттин маалымдама таштандысын колдонууга аракет кылдыңыз.
 ЧАКЫРУУ МЕТООД b->m1( ).
 ENDTRY.
 ************************************************* **************** ОБЪЕКТИ ТҮЗҮҮ a.
 ОБЪЕКТИ ТҮЗҮҮ б.
 АРАКЕТ КӨРҮҢҮЗ.
 b ?= a.
 CATCH cx_sy_move_cast_error.
 ЧАКЫРУУ МЕТООД b->m1( ).
 b->m2( ) ыкмасын чакырыңыз.
 ENDTRY.
 КЛАСС lcl_shape АНЫКТАМАСЫ.
 КООМДУК БӨЛҮМ.
 METHODES тартуу.
 ENDCLASS.
 CLASS lcl_circle АНЫКТАМАСЫ lcl_shape дан мурастоо.
 КООМДУК БӨЛҮМ.
 ЫКМАЛАР: REDEFINITION, calc_area.
 ENDCLASS.
 КЛАСС lcl_shape ИШКЕ АШЫРУУ.
 METHOD тартуу.
 WRITE :/ 'Кандай болбосун фигура тартуу'.
 ENDMETHOD.
 ENDCLASS.
 КЛАСС lcl_circle ИШКЕ АШЫРУУ.
 METHOD тартуу.
 WRITE :/ 'Өзгөчө форманы тартуу: Айлана'.
 ENDMETHOD.
 METHOD calc_area.
 WRITE :/ 'Ara Of Crcle = 2iiR'.
 ENDMETHOD.
 ENDCLASS.
 БАШТАЛУУ.
 DATA : o_cir TYPE REF TO lcl_circle.
 ОБЪЕКТИ ТҮЗҮҮ o_cir.
 ЧАКЫРУУ METHOD o_cir->draw( ).  " Draw() методу подклассын чакырат CALL METHOD o_cir->calc_area( ).
 ULINE.
 "--------- Тар cast(Upcast)---------------" МААЛЫМАТ : o_shp TYPE REF TO lcl_shape.
 o_shp = o_cir.  " Тар cast(Upcast) ЧАКЫРУУ METHOD o_shp->draw( ).  " Draw() ыкмасын чакырат "чакырык METHOD o_shp->calc_area( ) .  " компиляция катасы ULINE.
 "---------- Кеңейтүү Cast(Төмөндө) -------" МААЛЫМАТ : o_cir1 TYPE REF TO lcl_circle.
 " o_cir1 = o_shp.  " комплиляция катасы o_cir1 ?= o_shp.  " Кеңейтүү Cast(Төмөндө) ЧАКЫРУУ METHOD o_cir1->draw( ).  " Draw() методу подклассын чакырат CALL METHOD o_cir1->calc_area( ).
 КЛАСС a1 АНЫКТАМАСЫ.
 КООМДУК БӨЛҮМ.
 МААЛЫМАТ: num1 ТИП i БААЛУУ 100.
 ЫКМАЛАР: m1.
 ENDCLASS.
 КЛАСС a1 ИШКЕ АШЫРУУ.
 МЕТООД m1.
 ЖАЗУУ: 'a1:',num1.
 ENDMETHOD.
 ENDCLASS.
 b1 КЛАССЫНЫН АНЫКТАМАСЫ a1ден мурастоо.
 КООМДУК БӨЛҮМ.
 ЫКМАЛАР:м2, m1 КАЙРА АНЫКТОО.
 ENDCLASS.
 КЛАСС b1 ИШКЕ АШЫРУУ.
 МЕТООД m1.
 num1 = num1.
 ЖАЗУУ: 'b1:',num1.
 ENDMETHOD.
 МЕТООД m2.
 ЖАЗГЫЛА: «Б2 классындагы М1».
 ENDMETHOD.
 ENDCLASS.
 БАШТАЛУУ.
 МААЛЫМАТ: a1ге ата-эне ТИП REF.
 МААЛЫМАТ: бала ТИП REF TO b1.
 *маалыматтар: c түрү REF TO c1.
 ************************************************* ************* ОБЪЕКТИ ТҮЗҮҮ бала.
 ата-эне = бала.  "upcasting CALL METHOD parent->m1( ).
 ЧАКЫРУУ METHOD child->m1( ).
 ЧАКЫРУУ METHOD child->m2( ).
 *чалуу METHOD a->m2( ).  "Биз супер класстын реф. жардамы менен өзүбүздүн субкласс ыкмаларына кире албайбыз.
 ЖАҢЫ СЫЗЫК.
 бала ?= ата-эне.  " ылдый таштоо ЧАКЫРУУ METHOD child->m1( ).
 ЖАҢЫ СЫЗЫК.
 ЧАКЫРУУ METHOD child->m2( ).
 ************************************************* **************** *" ката null ref *объект түзүү а.
 *b ?= a.  "төмөн куюу дагы эле анын берүү дамп *чалуу METHOD b->m1( ).
 ************************************************* ***************** * ОБЪЕКТИ ТҮЗҮҮ a.
 АРАКЕТ КӨРҮҢҮЗ.
 b ?= a.  "Сиз CATCH cx_sy_move_cast_error" NULL' объекттин маалымдама таштандысын колдонууга аракет кылдыңыз.
 ЧАКЫРУУ МЕТООД b->m1( ).
 ENDTRY.
 ************************************************* ***************** * ОБЪЕКТИ ТҮЗҮҮ a.
 ОБЪЕКТИ ТҮЗҮҮ б.
 АРАКЕТ КӨРҮҢҮЗ.
 b ?= a.
 CATCH cx_sy_move_cast_error.
 ЧАКЫРУУ МЕТООД b->m1( ).
 b->m2( ) ыкмасын чакырыңыз.
 ENDTRY.
 ******** Уникалдуу баалуулуктар******************** DATA : lv_string TYPE сап, lv_string2 TYPE сап, lv_string_final TYPE сап.
 ТҮРЛӨР: ty_data БАШТАЛАРЫ, auth ТИП c, ty_data аягы.
 DATA: ls_user TYPE ty_data, ls_user2 TYPE ty_data, lt_user2 TYPE TABLE ty_data, lt_user TYPE TABLE TABLE ty_data.
 lv_string = 'a,b,c,a'.
 lv_string2 = 'd,b,c,a'.
 lv_string AT ',' TABLE INTO LT_user.
 lv_string2 AT ',' ТАБЛИЦИНЕ LT_user2.
 LT_user2 ТААЛАСЫ-СИМВОЛУН ТААЙЫНДАУУ ).
 INSERT INTO TABLE lt_user.
 ENDLOOP.
 lt_userди аук.
 lt_user САЛЫШТЫРГАН автордукту.
 IF sy-subrc = 0.
 LT_user ТААНЫШЫ ТАЛАС-СИМВОЛДУ (LOOP AT AT LT_user) ).
 ЭГЕР lv_string_final БАШТАЛГАН БОЛСО.
 lv_string_final = -авт.
 БАШКА.
 CONCATENATE lv_string_final -auth INTO lv_string_final ',' МЕНЕН АЖЫРАТ.
 ENDIF.
 ENDLOOP.
 ENDIF.

 

Комментарий калтыруу

Бул сайт спам азайтуу Akismet колдонот. Сиздин комментарий маалымат кандайча иштелишин Үйрөнүү.