Càsting al Programa ABAP

CLASSE a1 DEFINICIÓ.
 SECCIÓ PÚBLICA.
 DADES: num1 TIPUS i VALOR 100.
 MÈTODES: m1.
 CLASSE FINAL.
 CLASSE a1 IMPLEMENTACIÓ.
 MÈTODE m1.
 ESCRIU: 'a1:',núm1.
 MÈTODE FINAL.
 CLASSE FINAL.
 CLASSE b1 DEFINICIÓ HERETA DE a1.
 SECCIÓ PÚBLICA.
 MÈTODES: REDEFINICIÓ m2, m1.
 CLASSE FINAL.
 CLASSE b1 IMPLEMENTACIÓ.
 MÈTODE m1.
 núm1 = núm1.
 ESCRIU: 'b1:',núm1.
 MÈTODE FINAL.
 MÈTODE m2.
 ESCRIU: 'M2 a la classe b1'.
 MÈTODE FINAL.
 CLASSE FINAL.
 INICI DE LA SELECCIÓ.
 DADES: a TIPUS REF A a1.
 DADES: b TIPUS REF A b1.
 *dades: tipus c REF A c1.
 **************************************************** ************** CREAR OBJECTE b.
 a = b.  "upcasting CALL MÈTODE a->m1().
 *anomenar MÈTODE a->m2().  "No podem accedir als mètodes de subclasse propis mitjançant la superclasse ref.
 NEW-LINE.
 b ?= a.  " downcast MÈTODE CALL b->m1( ).
 NEW-LINE.
 MÈTODE DE CRADA b->m2( ).
 **************************************************** *************** " error null ref crea OBJECT a.
 b ?= a.  "El llançament cap avall encara és la trucada d'abocament MÈTODE b->m1().
 **************************************************** *************** CREAR OBJECTE a.
 PROVA.
 b ?= a.  "Heu intentat utilitzar un abocament de referència d'objecte "NULL" CATCH cx_sy_move_cast_error.
 MÈTODE DE CRADA b->m1( ).
 ENTRADA FINAL.
 **************************************************** *************** CREAR OBJECTE a.
 CREAR OBJECTE b.
 PROVA.
 b ?= a.
 CATCH cx_sy_move_cast_error.
 MÈTODE DE CRADA b->m1( ).
 crida MÈTODE b->m2().
 ENTRADA FINAL.
 CLASSE lcl_shape DEFINICIÓ.
 SECCIÓ PÚBLICA.
 MÈTODES sorteig.
 CLASSE FINAL.
 CLASSE lcl_circle DEFINICIÓ HERETA DE lcl_shape.
 SECCIÓ PÚBLICA.
 MÈTODES: dibuixar REDEFINICIÓ, calc_area.
 CLASSE FINAL.
 CLASSE lcl_shape IMPLEMENTACIÓ.
 MÈTODE sorteig.
 ESCRIURE :/ 'Dibuixant qualsevol forma'.
 MÈTODE FINAL.
 CLASSE FINAL.
 CLASSE lcl_circle IMPLEMENTACIÓ.
 MÈTODE sorteig.
 ESCRIURE :/ 'Dibuix de forma específica: cercle'.
 MÈTODE FINAL.
 MÈTODE calc_area.
 ESCRIU :/ 'Àrea de Crcle = 2iiR'.
 MÈTODE FINAL.
 CLASSE FINAL.
 INICI DE LA SELECCIÓ.
 DADES: o_cir TIPUS REF A lcl_circle.
 CREAR OBJECTE o_cir.
 MÈTODE DE CRADA o_cir->draw().  " crida al mètode Draw() de la subclasse CALL METHOD o_cir->calc_area().
 ULINE.
 "--------- Narrow cast(Upcast)---------------" DADES: o_shp TIPO REF A lcl_shape.
 o_shp = o_cir.  " Narrow cast (Upcast) CALL MÈTODE o_shp->draw( ).  " crida al mètode Draw() de la subclasse "truca a MÈTODE o_shp->calc_area() .  " error de compilació ULINE.
 "---------- Ampliació de la distribució (Downcast) -----------" DADES: o_cir1 TIPO REF A lcl_circle.
 " o_cir1 = o_shp.  " error de compliment o_cir1 ?= o_shp.  " Mètode de trucada d'ampliació de repartiment (difusió) o_cir1->draw().  " crida al mètode Draw() de la subclasse CALL METHOD o_cir1->calc_area().
 CLASSE a1 DEFINICIÓ.
 SECCIÓ PÚBLICA.
 DADES: num1 TIPUS i VALOR 100.
 MÈTODES: m1.
 CLASSE FINAL.
 CLASSE a1 IMPLEMENTACIÓ.
 MÈTODE m1.
 ESCRIU: 'a1:',núm1.
 MÈTODE FINAL.
 CLASSE FINAL.
 CLASSE b1 DEFINICIÓ HERETA DE a1.
 SECCIÓ PÚBLICA.
 MÈTODES: REDEFINICIÓ m2, m1.
 CLASSE FINAL.
 CLASSE b1 IMPLEMENTACIÓ.
 MÈTODE m1.
 núm1 = núm1.
 ESCRIU: 'b1:',núm1.
 MÈTODE FINAL.
 MÈTODE m2.
 ESCRIU: 'M2 a la classe b1'.
 MÈTODE FINAL.
 CLASSE FINAL.
 INICI DE LA SELECCIÓ.
 DADES: pare TIPUS REF A a1.
 DADES: nen TIPUS REF A b1.
 *dades: tipus c REF A c1.
 **************************************************** ************** CREAR OBJECTE fill.
 pare = fill.  "upcasting CALL METHOD pare->m1().
 MÈTODE DE CRADA fill->m1( ).
 MÈTODE DE CRADA fill->m2( ).
 *anomenar MÈTODE a->m2().  "No podem accedir als mètodes de subclasse propis mitjançant la superclasse ref.
 NEW-LINE.
 fill ?= pare.  " downcasting CALL MÈTODE fill->m1( ).
 NEW-LINE.
 MÈTODE DE CRADA fill->m2( ).
 **************************************************** **************** *" error null ref *crear OBJECTE a.
 *b ?= a.  "la llançament cap avall encara el seu abocador * truca MÈTODE b->m1().
 **************************************************** **************** * CREAR OBJECTE a.
 PROVA.
 b ?= a.  "Heu intentat utilitzar un abocament de referència d'objecte "NULL" CATCH cx_sy_move_cast_error.
 MÈTODE DE CRADA b->m1( ).
 ENTRADA FINAL.
 **************************************************** **************** * CREAR OBJECTE a.
 CREAR OBJECTE b.
 PROVA.
 b ?= a.
 CATCH cx_sy_move_cast_error.
 MÈTODE DE CRADA b->m1( ).
 crida MÈTODE b->m2().
 ENTRADA FINAL.
 ******** Valors únics******************** DADES: lv_string TYPE string, lv_string2 TYPE string, lv_string_final TYPE string.
 TIPUS: BEGIN OF ty_data, auth TYPE c, END OF ty_data.
 DADES: ls_user TYPE ty_data, ls_user2 TYPE ty_data, lt_user2 TYPE TABLE OF ty_data, lt_user TYPE TAULA DE ty_data.
 lv_string = 'a,b,c,a'.
 lv_string2 = 'd,b,c,a'.
 SPLIT lv_string AT ',' INTO TABLE lt_user.
 DIVIDEIX lv_string2 EN ',' A LA TAULA lt_user2.
 LOOP AT lt_user2 ASIGNACIÓ DEL SÍMBOL DE CAMP( ).
 INSERT INTO TABLE lt_usuari.
 ENDLOOP.
 SORT lt_user PER auth.
 ELIMINAR DUPLICATS ADJACENTS DE lt_user COMPARANT l'auth.
 SI sy-subrc = 0.
 LOOP AT lt_user ASIGNACIÓ DEL SÍMBOL DE CAMP( ).
 SI lv_string_final ÉS INICIAL.
 lv_string_final = -auth.
 ALTRES.
 CONCATENAR lv_string_final -auth INTO lv_string_final SEPARAT PER ','.
 ENDIF.
 ENDLOOP.
 ENDIF.

 

Deixa un comentari

Aquest lloc utilitza Akismet per reduir el correu no desitjat. Esbrineu com es processa el vostre comentari.