مواقع أخرى
الأخبار
BBC عربي
CNN عربي
الصحف
الجامعات
جامعة الملك سعود
جامعة الملك عبد العزيز
الرياضة
الــــوراثـة
Inheritance
مفهوم الوراثة في ( oop) يعني إمكانية وراثة صنف ما لمواصفات وخصائص آخر وبناءاً على ذلك فإنه يمكن تحديد مفهومين جديدين هما :
1. الصنف القاعدة ( الأساس ) Base class
وهو الصنف الذي يحوي البيانات و الوظائف المراد توريثها إلى صنف آخر ..
[ الصنف الموروث من قبل صنف آخر ]
2. الصنف المشتق Derived class :
وهو الصنف الوارث لصفات صنف القاعدة .
ملاحظة :-
عندما يرث الصنف المشتق صنف القاعدة فإن
كل خصائص ووظائف صنف القاعدة تكون
متاحة للصنف المشتق إضافة لذلك يمكن للصنف
المشتق تعريف خصائص ووظائف جديدة .
أنواع الوراثة :
نوع الوراثة يحدد درجة الوصول للبيانات (المتغيرات) والوظائف (الدوال) في الصنف المشتق .
وتوجد ثلاثة أنواع :
1) الوراثة الخاصة Private inheritance:عندما يرث صنف مشتق القاعدة وكان نوع الوراثة "خاص Private " فإن كل خصائص ووظائف صنف القاعدة ستصبح خاصة في الصنف المشتق .
2) الوارثة المحميةProfited inheritance : في هذا النوع من الوراثة ستصبح بيانات ووظائف صنف القاعدة محمية في الصنف المشتق .
3) الوراثة العامة Public inheritance : عندما يكون نوع الوراثة عام فإنه سوف يتم توزيع البيانات و الوظائف كالآتي :-
أ- المحمي في صنف القاعدة يصبح محمي في الصنف المشتق
ب- العام في صنف القاعدة يصبح عام في الصنف المشتق .
جدول يوضح تفاصيل الوراثة :
نوع الوراثة
نظم البيانات
خلف القاعدة
Private
لاحظ أن النوع Private لا يورث أبداً أنما الأنواع التي تورث هي Perfected و Public فقط .
الصيغة العامة للوراثة
Syntax
القاعدة
class base
{
_____
المشتق
Class derived
}
ولجعل الصنف المشتق Derived يرث من القاعدة base
نكتب الآتي :-
Class derived = < inheritance type >
____
أعلى
مثال :-
// base class
class B
Int ;
Public :
Set _ i ( int n ) ;
int get _ i ( ) ;
// derived class
class D : Public B
Int j ;
Set _ j ( int n ) ;
int mul ( ) ;
ملاحظة:-
1 -class D = Public B
تعنى أن الصنف D يرث جميع صفات الصنف الموروثB.
والآن نكتب البرنامج بصورة متكاملة
# Include < iostream.h >
# Include < conio.h >
Int get_i ( ) ;
} ;
Class derived:public base
Int j;
Public:
Set_j (int n) ;
Int mul ( );
};
// value of I in base class
base ::set_i(int n)
i=n;
// return value of i to base class
int base::get_i( )
return i ;
// value of i in derived class
derived::set_j(int n)
j = n ;
// return i from base class and j
// from drived class
int derived::mul ( )
return j * get_i( );
main ( )
derived ob;
int i,j;
caut<< "enter i and j \n ";
cin>>i>>j;
ob_set_i(i);
ob_set_j(j);
caut<<ob.mul( );
getch( );
جميع الحقوق محفوظة © 2006