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

SAP ABAP - Inheritance الوراثة في ساب

 

SAP ABAP - Inheritance



SAP ABAP - Inheritance الوراثة في ساب

SAP ABAP - Inheritance الوراثة في ساب

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

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

  • يمكن أن يكتسب كائن من فئة واحدة خصائص فئة أخرى.

  • ترث الفئة المشتقة البيانات والأساليب الخاصة بالفئة الممتازة. ومع ذلك ، يمكنهم استبدال الطرق وإضافة طرق جديدة أيضًا.

  • الميزة الرئيسية للوراثة هي إعادة الاستخدام.

يتم تحديد علاقة الوراثة باستخدام إضافة "الوراثة من" إلى عبارة تعريف الفئة.

فيما يلي بناء الجملة -

CLASS <subclass> DEFINITION INHERITING FROM <superclass>.

مثال

Report ZINHERITAN_1. 
CLASS Parent Definition. 
PUBLIC Section. 
Data: w_public(25) Value 'This is public data'. 
Methods: ParentM. 
ENDCLASS. 

CLASS Child Definition Inheriting From Parent. 
PUBLIC Section. 
Methods: ChildM. 
ENDCLASS. 

CLASS Parent Implementation. 
Method ParentM. 
Write /: w_public. 
EndMethod. ENDCLASS. 

CLASS Child Implementation. 
Method ChildM. 
Skip. 
Write /: 'Method in child class', w_public.
EndMethod. 
ENDCLASS. 

Start-of-selection. 
Data: Parent Type Ref To Parent, 
Child Type Ref To Child. 
Create Object: Parent, Child. 
Call Method: ParentParentM, 
childChildM.

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

This is public data 
Method in child class 
This is public data

التحكم في الوصول والوراثة

يمكن للفئة المشتقة الوصول إلى جميع الأعضاء غير الخاصين لفئتها الأساسية. وبالتالي ، يجب إعلان أعضاء الفئة الفائقة الذين لا ينبغي أن يكونوا في متناول وظائف الأعضاء في الفئات الفرعية خاصين في الفئة العليا. يمكننا تلخيص أنواع الوصول المختلفة وفقًا لمن يمكنه الوصول إليها بالطريقة التالية -

التمكن منعامةمحمينشر
نفس calssنعمنعمنعم
فئة مشتقةنعمنعملا
الطبقة الخارجيةنعملالا

عند اشتقاق فئة من فئة فائقة ، يمكن توريثها من خلال الميراث العام أو المحمي أو الخاص. يتم تحديد نوع الوراثة بواسطة محدد الوصول كما هو موضح أعلاه. نادرًا ما نستخدم الميراث المحمي أو الخاص ، لكن الميراث العام شائع الاستخدام. يتم تطبيق القواعد التالية أثناء استخدام أنواع مختلفة من الميراث.

  • الميراث العام - عند اشتقاق فصل دراسي من فئة عامة فائقة ، يصبح الأعضاء العموميون من الطبقة العليا أعضاءً عامين في الفئة الفرعية ويصبح الأعضاء المحميون من الطبقة العليا أعضاء محميين من الطبقة الفرعية. لا يمكن الوصول إلى أعضاء Super class الخاصين مباشرة من فئة فرعية ، ولكن يمكن الوصول إليها من خلال المكالمات إلى العامة والأعضاء المحميون من الطبقة الممتازة.

  • الميراث المحمي - عند الاشتقاق من طبقة عليا محمية ، يصبح الأعضاء العامون والمحميون من الطبقة العليا أعضاء محميين في الطبقة الفرعية.

  • الميراث الخاص - عند الاشتقاق من فئة فائقة خاصة ، يصبح الأعضاء العامون والمحميون من الطبقة العليا أعضاءً خاصين في الطبقة الفرعية.

إعادة تعريف الطرق في الصنف الفرعي

يمكن إعادة تنفيذ طرق الطبقة الممتازة في الفئة الفرعية. قواعد قليلة لإعادة تعريف الأساليب -

  • يجب أن يكون بيان إعادة تعريف الطريقة الموروثة في نفس القسم مثل تعريف الطريقة الأصلية.

  • إذا قمت بإعادة تعريف طريقة ، فلن تحتاج إلى إدخال واجهتها مرة أخرى في الفئة الفرعية ، ولكن فقط اسم الطريقة.

  • ضمن الطريقة المعاد تعريفها ، يمكنك الوصول إلى مكونات الفئة الممتازة المباشرة باستخدام المرجع الفائق.

  • لا يمكن استخدام المرجع الزائف الفائق إلا في الأساليب المعاد تعريفها.

مثال

Report Zinheri_Redefine. 
CLASS super_class Definition. 
Public Section. 
Methods: Addition1 importing g_a TYPE I
                             g_b TYPE I
		   exporting g_c TYPE I.
ENDCLASS. 

CLASS super_class Implementation. 
Method Addition1. 
g_c = g_a + g_b. 
EndMethod. 
ENDCLASS. 

CLASS sub_class Definition Inheriting From super_class. 
Public Section. 
METHODS: Addition1 Redefinition. 
ENDCLASS. 

CLASS sub_class Implementation. 
Method Addition1. 
g_c = g_a + g_b + 10. 
EndMethod. 
ENDCLASS. 

Start-Of-Selection. 
Parameters: P_a Type I, P_b TYPE I. 
Data: H_Addition1 TYPE I. 
Data: H_Sub TYPE I. 
Data: Ref1 TYPE Ref TO sub_class. 
Create Object Ref1. 
Call Method Ref1Addition1 exporting g_a = P_a 
                                     g_b = P_b
		           Importing g_c = H_Addition1. 
Write:/ H_Addition1.

بعد تنفيذ F8 ، إذا أدخلنا القيمتين 9 و 10 ، فإن الكود أعلاه ينتج الناتج التالي -

إعادة تطبيق فئة OS الفرعية
Redefinition Demo 
29




التسميات: