الثلاثاء، 20 أكتوبر 2020

SAP ABAP - Polymorphism تعدد الأشكال في ساب

 SAP ABAP - Polymorphism تعدد الأشكال في ساب

SAP ABAP - Polymorphism تعدد الأشكال في ساب

SAP ABAP - Polymorphism تعدد الأشكال في ساب 

مصطلح تعدد الأشكال يعني حرفيا "العديد من الأشكال". من منظور موجه للكائنات ، يعمل تعدد الأشكال جنبًا إلى جنب مع الوراثة لجعل من الممكن استخدام أنواع مختلفة داخل شجرة الوراثة بالتبادل. أي أن تعدد الأشكال يحدث عندما يكون هناك تسلسل هرمي للفئات وترتبط بالوراثة. يعني تعدد الأشكال ABAP أن استدعاء طريقة ما سيؤدي إلى تنفيذ طريقة مختلفة اعتمادًا على نوع الكائن الذي يستدعي الطريقة.

يحتوي البرنامج التالي على فئة مجردة "class_prgm" ، وفئتان فرعيتان (class_procedural و class_OO) ، وفئة سائق الاختبار "class_type_approach". في هذا التنفيذ ، تسمح لنا طريقة الفصل "بدء" بعرض نوع البرمجة وطريقتها. إذا نظرت عن كثب إلى توقيع الطريقة "البدء" ، ستلاحظ أنها تتلقى معلمة استيراد من النوع class_prgm. ومع ذلك ، في حدث Start-Of-Selection ، تم استدعاء هذه الطريقة في وقت التشغيل باستخدام كائنات من النوع class_procedural و class_OO.

مثال

Report ZPolymorphism1. 
CLASS class_prgm Definition Abstract. 
PUBLIC Section. 
Methods: prgm_type Abstract, 
approach1 Abstract. 
ENDCLASS. 

CLASS class_procedural Definition 
Inheriting From class_prgm. 
PUBLIC Section. 
Methods: prgm_type Redefinition, 
approach1 Redefinition. 
ENDCLASS. 

CLASS class_procedural Implementation. 
Method prgm_type. 
Write: 'Procedural programming'. 

EndMethod. Method approach1. 
Write: 'top-down approach'. 

EndMethod. ENDCLASS. 
CLASS class_OO Definition 
Inheriting From class_prgm. 
PUBLIC Section. 
Methods: prgm_type Redefinition, 
approach1 Redefinition. 
ENDCLASS. 

CLASS class_OO Implementation. 
Method prgm_type. 
Write: 'Object oriented programming'. 
EndMethod. 

Method approach1. 
Write: 'bottom-up approach'.
EndMethod. 
ENDCLASS. 

CLASS class_type_approach Definition. 
PUBLIC Section. 
CLASS-METHODS: 
start Importing class1_prgm 
Type Ref To class_prgm. 
ENDCLASS. 

CLASS class_type_approach IMPLEMENTATION. 
Method start. 
CALL Method class1_prgmprgm_type. 
Write: 'follows'. 

CALL Method class1_prgmapproach1. 
EndMethod. 
ENDCLASS. 

Start-Of-Selection. 
Data: class_1 Type Ref To class_procedural, 
class_2 Type Ref To class_OO. 

Create Object class_1. 
Create Object class_2. 
CALL Method class_type_approachstart 
Exporting 

class1_prgm = class_1. 
New-Line. 
CALL Method class_type_approachstart 
Exporting 
class1_prgm = class_2.  

ينتج الكود أعلاه الناتج التالي -

Procedural programming follows top-down approach  
Object oriented programming follows bottom-up approach

تقوم بيئة وقت تشغيل ABAP بإجراء تضييق ضمني أثناء تعيين معلمة الاستيراد class1_prgm. تساعد هذه الميزة طريقة "البدء" ليتم تنفيذها بشكل عام. تسمح معلومات النوع الديناميكي المرتبطة بالمتغير المرجعي للكائن لبيئة وقت تشغيل ABAP بربط استدعاء الأسلوب ديناميكيًا بالتنفيذ المحدد في الكائن المشار إليه بواسطة متغير مرجع الكائن. على سبيل المثال ، يشير معامل الاستيراد "class1_prgm" للطريقة "start" في فئة "class_type_approach" إلى نوع مجردة لا يمكن إنشاء مثيل له بمفرده.

عندما يتم استدعاء الطريقة مع تنفيذ فئة فرعية ملموسة مثل class_procedural أو class_OO ، فإن النوع الديناميكي للمعامل المرجعي class1_prgm مرتبط بأحد هذه الأنواع الملموسة. لذلك ، تشير الاستدعاءات إلى الأساليب 'prgm_type' و 'method1' إلى عمليات التنفيذ المتوفرة في الفئات الفرعية class_procedural أو class_OO بدلاً من تطبيقات الملخص غير المحددة المتوفرة في الفئة 'class_prgm'.





التسميات: