ליהוק בתוכנית ABAP

CLASS a1 הגדרה.
 מדור ציבורי.
 נתונים: num1 TYPE i VALUE 100.
 שיטות: m1.
 ENDCLASS.
 יישום CLASS a1.
 שיטה m1.
 כתוב: 'a1:',num1.
 ENDMETHOD.
 ENDCLASS.
 מחלקה b1 הגדרה בירושה מ-a1.
 מדור ציבורי.
 שיטות: מ"ר, מ"ר הגדרה מחדש.
 ENDCLASS.
 יישום CLASS b1.
 שיטה m1.
 num1 = num1 .
 כתוב: 'b1:',num1.
 ENDMETHOD.
 שיטה m2.
 כתוב: 'M2 במחלקה b1'.
 ENDMETHOD.
 ENDCLASS.
 תחילת הבחירה.
 נתונים: סוג REF ל-a1.
 נתונים: b TYPE REF TO b1.
 *נתונים: c הקלד REF TO c1.
 ************************************************** *************** צור אובייקט ב.
 a = ב.  "שידור CALL METHOD a->m1( ).
 *קרא METHOD a->m2( ).  "איננו יכולים לגשת לשיטות המשנה שלנו באמצעות ref class super.
 שורה חדשה.
 b ?= א.  "הליהוק למטה CALL METHOD b->m1( ).
 שורה חדשה.
 CALL METHOD b->m2( ).
 ************************************************** *************** " שגיאה null ref צור OBJECT א.
 b ?= א.  "הטלה למטה עדיין היא מתן dump call METHOD b->m1( ).
 ************************************************** *************** צור אובייקט א.
 לְנַסוֹת.
 b ?= א.  "אתה ניסה להשתמש ב-'NULL' של הפניה לאובייקט CATCH cx_sy_move_cast_error.
 CALL METHOD b->m1( ).
 ENDTRY.
 ************************************************** *************** צור אובייקט א.
 צור אובייקט ב.
 לְנַסוֹת.
 b ?= א.
 CATCH cx_sy_move_cast_error.
 CALL METHOD b->m1( ).
 קרא METHOD b->m2( ).
 ENDTRY.
 CLASS lcl_shape DEFINITION.
 מדור ציבורי.
 שיטות לצייר.
 ENDCLASS.
 CLASS lcl_circle DEFINITION יורש מ-lcl_shape.
 מדור ציבורי.
 שיטות: צייר REDEFINITION, calc_area.
 ENDCLASS.
 CLASS lcl_shape יישום.
 ציור METHOD.
 כתוב :/ 'צייר כל צורה'.
 ENDMETHOD.
 ENDCLASS.
 יישום CLASS lcl_circle.
 ציור METHOD.
 כתוב :/ 'ציור צורה ספציפית: עיגול'.
 ENDMETHOD.
 METHOD calc_area.
 כתוב :/ 'אזור של Crcle = 2iiR'.
 ENDMETHOD.
 ENDCLASS.
 תחילת הבחירה.
 DATA : o_cir TYPE REF TO lcl_circle.
 CREATE OBJECT o_cir.
 CALL METHOD o_cir->draw( ).  " קורא ל-subclass שיטת Draw() CALL METHOD o_cir->calc_area( ).
 ULINE.
 "--------- יצוק צר (Upcast) --------------" DATA : o_shp TYPE REF TO lcl_shape.
 o_shp = o_cir.  " קאסט צר (Upcast) CALL METHOD o_shp->draw( ).  " קורא ל- sub class Draw() method "call METHOD o_shp->calc_area( ) .  " שגיאת קומפילציה ULINE.
 "--------- הרחבת יציקה (Downcast) -----------" DATA : o_cir1 TYPE REF TO lcl_circle.
 " o_cir1 = o_shp.  " שגיאת קומפילציה o_cir1 ?= o_shp.  " הרחבת Cast(Downcast) CALL METHOD o_cir1->draw( ).  " קורא ל-subclass שיטת Draw() CALL METHOD o_cir1->calc_area( ).
 CLASS a1 הגדרה.
 מדור ציבורי.
 נתונים: num1 TYPE i VALUE 100.
 שיטות: m1.
 ENDCLASS.
 יישום CLASS a1.
 שיטה m1.
 כתוב: 'a1:',num1.
 ENDMETHOD.
 ENDCLASS.
 מחלקה b1 הגדרה בירושה מ-a1.
 מדור ציבורי.
 שיטות: מ"ר, מ"ר הגדרה מחדש.
 ENDCLASS.
 יישום CLASS b1.
 שיטה m1.
 num1 = num1 .
 כתוב: 'b1:',num1.
 ENDMETHOD.
 שיטה m2.
 כתוב: 'M2 במחלקה b1'.
 ENDMETHOD.
 ENDCLASS.
 תחילת הבחירה.
 נתונים: אב סוג REF TO a1.
 נתונים: ילד TYPE REF TO b1.
 *נתונים: c הקלד REF TO c1.
 ************************************************** ************** ילד יצירת אובייקט.
 הורה = ילד.  "משדר CALL METHOD parent->m1( ).
 CALL METHOD child->m1( ).
 CALL METHOD child->m2( ).
 *קרא METHOD a->m2( ).  "איננו יכולים לגשת לשיטות המשנה שלנו באמצעות ref class super.
 שורה חדשה.
 ילד ?= הורה.  "הטלה למטה CALL METHOD child->m1( ).
 שורה חדשה.
 CALL METHOD child->m2( ).
 ************************************************** **************** *" error null ref *צור OBJECT א.
 *ב ?= א.  "הטלה למטה עדיין זה נותן dump *call METHOD b->m1( ).
 ************************************************** **************** * צור אובייקט א.
 לְנַסוֹת.
 b ?= א.  "אתה ניסה להשתמש ב-'NULL' של הפניה לאובייקט CATCH cx_sy_move_cast_error.
 CALL METHOD b->m1( ).
 ENDTRY.
 ************************************************** **************** * צור אובייקט א.
 צור אובייקט ב.
 לְנַסוֹת.
 b ?= א.
 CATCH cx_sy_move_cast_error.
 CALL METHOD b->m1( ).
 קרא METHOD b->m2( ).
 ENDTRY.
 ******** ערכים ייחודיים****************** DATA : lv_string TYPE string, lv_string2 TYPE string, lv_string_final TYPE string.
 TYPES: BEGIN OF ty_data, auth TYPE c, END OF ty_data.
 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 ASSIGING FIELD-SYMBOL( ).
 לְהַכנִיס INTO TABLE lt_user.
 ENDLOOP.
 SORT lt_user BY aut.
 מחק כפילויות צמודות מ-lt_user COMPARING auth.
 IF sy-subrc = 0.
 LOOP AT lt_user ASSIGNING FIELD-SYMBOL( ).
 אם lv_string_final הוא ראשוני.
 lv_string_final = -auth.
 אַחֵר.
 CONCATENATE lv_string_final -auth INTO lv_string_final מופרד על ידי ','.
 ENDIF.
 ENDLOOP.
 ENDIF.

 

השאר תגובה

אתר זה משתמש Akismet כדי להפחית דואר זבל. למד כיצד הנתונים שלך מעובדים.