الأصناف المشتقة و القوالب Derived Classes and Templates
Inheritance تعريف الوراثة
تعريف
الوراثة : هي إمكانية أن يرث صنف ما الخصائص والعمليات الموجودة في صنف آخر ، مما
يساعد على إعادة استخدام Reusability
الأصناف
التي تم إنشاؤها من قبل .
وبناء على هذا التعريف فإنه يمكن تحديد مفهومين جديدين وهما :
1- صنف القاعدة ( الأساس Or
الموروث
) base
class : وهو
الصنف الذي يحوي البيانات والعمليات المراد توريثها لصنف آخر
2- الصنف المشتق ( الوارث ) Derived class : وهو
الصنف الوارث لخصائص وعمليات الصنف الأساس .
Inheritance Types أنواع
الوراثة
توفر
لغة C++ ثلاث
أنواع من الوراثة حيث يحدد نوع الوراثة درجة الوصول للبيانات والعمليات الموجودة
في صنف الأساس من خلال الصنف المشتق . والأنواع هي :
1- الوراثة الخاصة private
Inheritance :
عندما
يرث صنف مشتق صنف الأساس وكان نوع الوراثة خاص فإنه كل البيانات والعمليات
الموجودة في صنف الأساس تصبح خاصة الصنف المشتق .
2-الوراثة المحمية protected
Inheritance :
وفي
هذا النوع تصبح كل بيانات وعمليات صنف الأساس محميّة بالصنف المشتق
.
3- الوراثة العامة public
Inheritance :
في
هذا النوع يتم توزيع البيانات والعمليات كما يلي :
أ- المحمي protected
في
صنف الأساس base
class يصبح
محمي في الصنف المشتق .
ب- العام public
في
صنف الأساس يصبح عام في الصنف المشتق .
ج- الخاص لا يورّث أبدا ( البيانات الخاصة لا تورّث أبداً )! ..
تابع للمثال السابق
void
B::set_i(int
n)
{i=n;}
int B::get_i()
{
return i;
}
void D::set_j(int
m)
{
j=m;}
int
D::multi()
{
return get_i()*j;
}
int
main()
{
int a,b;
cout<<"Enter
A,B \n";
cin>>a>>b;
D ob;
ob.set_i(a);
ob.set_j(b);
cout<<"Multi
="<<ob.multi()<<endl;
دوال البناء والهدم تحت الوراثة
Constructor And Destructor Functions Under Inheritance :
Constructor And Destructor Functions Under Inheritance :
إن
كلاً من الصنف الوارث والصنف الموروث يمكن أن يمتلكا دوال بناء ودوال هدم
.
ملاحظات هامة:
1- دالة بناء الصنف الموروث تنفذ قبل دالة بناء الصنف الوارث .
2- دالة هدم الصنف الوارث تنفذ قبل دالة هدم الصنف الموروث .
3- لا يمكن توريث دوال البناء والهدم من الصنف الأساس إلى الصنف المشتق .
4- يتم إرسال المعاملات لدالة بناء الصنف الموروث من خلال دالة بناء الصنف الوارث
باستخدام مهيء العضو ( : ) .
مثال على دوال البناء و الهدم
class
point
{
public:
point ( int
=0,int =0);
~point();
protected:
int x,y;
};
point::point(int a,int
b)
{
x=a;
y=b;
cout<<"Point
Constructor ["<<x<<','<<y<<']'<<endl;
}
point::~point()
{
cout<<"Point
Destructor:["<<x<<','<<y<<']'<<endl;
system("PAUSE");
}
ملاحظة هامة عن المثال
( لاحظ هنا يتم أولاً تنفيذ دوال
البناء كلها قبل تنفيذ أي دالة هدم قبل الخروج من المجال المحدد).
بعد ذلك يتم استدعاء دوال هدم الصنف
الوارث قبل الصنف الموروث بترتيب معاكس بحيث الناتج النهائي للبرنامج بكامل
مخرجاته ستكون على النحو التالي :
تحميل باقى الدرس ملف بوربونت
شرح د.سهى الأعرج
لاتنسى الاعجاب بصفحتنا وانضم الينا
❤||| لا تنسى الانضمام الى المدونة بالضغط هنا |||❤
اذا لديك أي سؤال، فلا تتردد في الاتصال بنا
.For any kind of question, please feel free to contact us.
HAMAD BASHIR
اطرح اي سؤال خاص بالموضوع في التعليقات