Professional Documents
Culture Documents
LMHD
LMHD
المحاضرة التاسعة
الوراثــة
Inheritance
مفهوم الوراثة يف ( ) oopيعين إمكانية وراثة صنف ما ملواصفات وخصائص صنف آخر وبناءاً على ذلك فإنه ميكن
حتديد مفهومني جديدين مها :
.1صنف القاعدة ( األساس ) Base Class
وهو الصنف الذي حيوي البيانات و الدوال املراد توريثها إىل صنف آخر ..
[ الصنف املوروث من قبل صنف آخر ]
.2الصنف المشتق Derived Class
وهو الصنف الوارث لصفات صنف القاعدة .
عندددما يددرث الصددنف املفددلق صددنف القاعدددة فددإا فددل خصددائص ووكددائف صددنف القاعدددة تكددوا
ملاحة للصنف املفلق إضافة لذلك ميكن للصنف املفلق تعريف خصائص ووكائف جديدة .
أنواع الوراثة:
نوع الوراثة حيدد درجة الوصول للبيانات (امللغريات) والوكائف (الدوال) يف الصنف املفلق .
وتوجد ثالثة أنواع :
.1الوراثة الخاصة Private inheritance
عندما يرث صنف مفلق صنف القاعدة وفاا نوع الوراثة "خاص " Privateفإا فل خصائص ووكائف صنف
القاعدة سلصبح خاصة يف الصنف املفلق .
.2الوارثة المحمية Protected inheritance
يف هذا النوع من الوراثة سلصبح بيانات ووكائف صنف القاعدة حممية يف الصنف املفلق .
.3الوراثة العامة Public inheritance
عندما يكوا نوع الوراثة عام فإنه سوف يلم توزيع البيانات و الوكائف فاآليت -:
أ .احملمي يف صنف القاعدة يصبح حممي يف الصنف املفلق
ب .العام يف صنف القاعدة يصبح عام يف الصنف املفلق .
نوع الوراثة
Public Protected Private
نوع بيانات
صنف القاعدة
ال يورث ال يورث ال يورث Private
النوع Privateال يورث أبداً بينما األنواع اليت تورث هي Protectedو Publicفقط .
.. األعءاء احملمية يف الصنف تعلة مغلقة (ال ميكن الوصول إليها) يف أي صنف غري وارث
#include<iostream.h>
class base
{
protected :
int a,b;
public:
void set_ab( int n,int m )
{
5 حذيفة عبد الرحمن/إعداد األستاذ
لغات برمجية متقدمة
;a = n
;b = m
}
;}
class derived:public base
{
; int c
public :
) void set_c( int n
{
;c = n
}
) (void show_abc
{
;"cout << a << " \t " << b << "\t " <<c<<"\n
}
;}
) ( int main
{
;int a1,b1,c1
;cin>>a1>>b1>>c1
;derived ob
;)ob.set_ab(a1,b1
;)ob.set_c(c1
;) (ob.show_abc
;return 0
}
دوال البناء و الهدم تحت الوراثة :
Constructor and Destructor Functions with Inheritance
والصنف الوارث derived classميكن أا متللكاا دوال بناء أو دوال هدم base class إا فالً من الصنف املوروث
.1دالة بناء الصنف املوروث يلم تنفيذها قبل دالة بناء الصنف الوارث
.2دالة هدم الصنف الوارث تنفذ قبل دالة اهلدم للصنف املوروث .
وذلك يعود العلماد الصنف الوراث دائماً على الصدنف املدوروث واسدلقاللية الصدنف املدوروث عدن
الصنف الوارث .
Out Put :-
Constructor of base class
Constructor of derived class
Destructor of derived class
Destructor of base class
يف الةنامس أعدال دالدة بنداء الصدنف املدوروث و الدوارث متللدك نفد املعامدل ويقدوم الصدنف الدوارث
بإرسال هذا املعامل إىل الصنف املوروث .
حيث أا املعامل nيلم إرساله من الصنف الوارث إىل املوروث من خالل العبارة :
)derived ( int n ):base (n
مثال -:يوضح كيفية إرسال معامل معين إلى دالة بناء الصنف الوارث وآخر إلى دالة الصنف الموروث
>#include<iostream.h
class base
{
;int i
public :
) base( int n
{
;" cout<<"costructor of base class \n
;i=n
}
) ( ~base
{
;"cout<<"destructor of base class \n
}
) (showi
{
;"cout<<i<< "\n
}
;}
class derived:public base
{
;int j
public:
) derived ( int n , int m ):base ( m
//transfer perrameter to base class