برنامج Casting in ABAP

تعريف الفئة A1.
 القسم العام.
 البيانات: العدد 1 النوع الأول القيمة 100.
 الطرق: م 1.
 التصنيف النهائي.
 تنفيذ الفئة a1.
 طريقة m1.
 اكتب: 'a1:'، num1.
 نهاية.
 التصنيف النهائي.
 وراثة تعريف الفئة ب 1 من أ 1.
 القسم العام.
 الطرق: م 2 ، م 1 إعادة تعريف.
 التصنيف النهائي.
 تنفيذ الفئة ب 1.
 طريقة m1.
 عدد 1 = عدد 1.
 اكتب: 'b1:'، num1.
 نهاية.
 طريقة m2.
 اكتب: "M2 في الفئة b1".
 نهاية.
 التصنيف النهائي.
 بدء الاختيار.
 البيانات: نوع المرجع إلى a1.
 البيانات: نوع المرجع إلى b1.
 * البيانات: نوع c REF TO c1.
 **************************************************** ************** إنشاء كائن ب.
 أ = ب.  "upcasting CALL METHOD a-> m1 ().
 * استدعاء METHOD a-> m2 ().  "لا يمكننا الوصول إلى طرق الفئة الفرعية الخاصة باستخدام مرجع الفئة الفائقة.
 خط جديد.
 ب؟ = أ.  "down casting CALL METHOD b-> m1 ().
 خط جديد.
 طريقة الاتصال b-> m2 ().
 **************************************************** *************** "خطأ فارغ المرجع إنشاء كائن أ.
 ب؟ = أ.  "down casting لا يزال يعطي استدعاء تفريغ METHOD b-> m1 ().
 **************************************************** *************** إنشاء كائن أ.
 يحاول.
 ب؟ = أ.  "حاولت استخدام مرجع كائن 'NULL' تفريغ CATCH cx_sy_move_cast_error.
 طريقة الاتصال b-> m1 ().
 نهاية.
 **************************************************** *************** إنشاء كائن أ.
 إنشاء كائن ب.
 يحاول.
 ب؟ = أ.
 CATCH cx_sy_move_cast_cast.
 طريقة الاتصال b-> m1 ().
 استدعاء METHOD b-> m2 ().
 نهاية.
 تعريف الفئة lcl_shape.
 القسم العام.
 طرق الرسم.
 التصنيف النهائي.
 CLASS lcl_circle تعريف الوراثة من lcl_shape.
 القسم العام.
 الطرق: رسم REDEFINITION ، calc_area.
 التصنيف النهائي.
 تنفيذ فئة lcl_shape.
 طريقة الرسم.
 اكتب: / "رسم أي شكل".
 نهاية.
 التصنيف النهائي.
 تنفيذ CLASS lcl_circle.
 طريقة الرسم.
 اكتب: / "رسم شكل محدد: دائرة".
 نهاية.
 طريقة calc_area.
 اكتب: / "منطقة Crcle = 2iiR".
 نهاية.
 التصنيف النهائي.
 بدء الاختيار.
 البيانات: o_cir TYPE REF TO lcl_circle.
 إنشاء كائن o_cir.
 طريقة الاتصال o_cir-> ارسم ().  "استدعاء الفئة الفرعية Draw () طريقة CALL METHOD o_cir-> calc_area ().
 ULINE.
 "--------- Narrow cast (Upcast) ---------------" DATA: o_shp TYPE REF TO lcl_shape.
 o_shp = o_cir.  "Cast Narrow cast (Upcast) CALL METHOD o_shp-> draw ().  "استدعاء طريقة الرسم من الفئة الفرعية" استدعاء METHOD o_shp-> calc_area ().  "خطأ في الترجمة ULINE.
 "---------- توسيع Cast (Downcast) -----------" DATA: o_cir1 TYPE REF TO lcl_circle.
 "o_cir1 = o_shp.  "خطأ الإكمال o_cir1؟ = o_shp.  "توسيع المصبوب (أسفل) CALL METHOD o_cir1-> draw ().  "استدعاء الفئة الفرعية Draw () طريقة CALL METHOD o_cir1-> calc_area ().
 تعريف الفئة A1.
 القسم العام.
 البيانات: العدد 1 النوع الأول القيمة 100.
 الطرق: م 1.
 التصنيف النهائي.
 تنفيذ الفئة a1.
 طريقة m1.
 اكتب: 'a1:'، num1.
 نهاية.
 التصنيف النهائي.
 وراثة تعريف الفئة ب 1 من أ 1.
 القسم العام.
 الطرق: م 2 ، م 1 إعادة تعريف.
 التصنيف النهائي.
 تنفيذ الفئة ب 1.
 طريقة m1.
 عدد 1 = عدد 1.
 اكتب: 'b1:'، num1.
 نهاية.
 طريقة m2.
 اكتب: "M2 في الفئة b1".
 نهاية.
 التصنيف النهائي.
 بدء الاختيار.
 البيانات: الأصل TYPE REF TO a1.
 البيانات: نوع الطفل REF TO b1.
 * البيانات: نوع c REF TO c1.
 **************************************************** ************** إنشاء كائن طفل.
 الوالد = الطفل.  "upcasting CALL METHOD parent-> m1 ().
 طريقة استدعاء الطفل-> m1 ().
 طريقة استدعاء الطفل-> m2 ().
 * استدعاء METHOD a-> m2 ().  "لا يمكننا الوصول إلى طرق الفئة الفرعية الخاصة باستخدام مرجع الفئة الفائقة.
 خط جديد.
 طفل؟ = الوالدين.  "downing CALL METHOD child-> m1 ().
 خط جديد.
 طريقة استدعاء الطفل-> m2 ().
 **************************************************** **************** * "خطأ فارغ المرجع * إنشاء كائن أ.
 * ب؟ = أ.  "down casting ما زال يعطي تفريغه * استدعاء METHOD b-> m1 ().
 **************************************************** ****************** * إنشاء كائن أ.
 يحاول.
 ب؟ = أ.  "حاولت استخدام مرجع كائن 'NULL' تفريغ CATCH cx_sy_move_cast_error.
 طريقة الاتصال b-> m1 ().
 نهاية.
 **************************************************** ****************** * إنشاء كائن أ.
 إنشاء كائن ب.
 يحاول.
 ب؟ = أ.
 CATCH cx_sy_move_cast_cast.
 طريقة الاتصال b-> m1 ().
 استدعاء METHOD b-> m2 ().
 نهاية.
 ******** القيم الفريدة ******************** البيانات: سلسلة lv_string TYPE ، سلسلة lv_string2 TYPE ، سلسلة lv_string_final TYPE.
 الأنواع: بداية ty_data ، auth النوع c ، نهاية ty_data.
 البيانات: ls_user TYPE ty_data، ls_user2 TYPE ty_data، lt_user2 TYPE TYPE OF ty_data، lt_user TYPE TYPE TY_data.
 lv_string = 'أ ، ب ، ج ، أ'.
 lv_string2 = 'د ، ب ، ج ، أ'.
 SPLIT lv_string AT '،' INTO TABLE lt_user.
 SPLIT lv_string2 AT '،' INTO TABLE lt_user2.
 LOOP AT lt_user2 تعيين حقل الرمز ( ).
 إدراج في الجدول lt_user.
 ENDLOOP.
 فرز lt_user حسب المصادقة.
 احذف التكرارات الضيقة من lt_user مقارنة المصادقة.
 إذا كان sy-subrc = 0.
 LOOP AT lt_user تعيين حقل الرمز ( ).
 إذا كانت lv_string_final أولية.
 lv_string_final = -عث.
 آخر.
 CONCATENATE Lv_string_final -auth INTO lv_string_final منفصل بواسطة '،'.
 إنهاء إذا.
 ENDLOOP.
 إنهاء إذا.

 

اترك تعليقا

يستخدم هذا الموقع نظام Akismet لتقليل الرسائل الضارة. تعرف كيف تتم معالجة بيانات تعليقك.