الوراثة C ++

C Inheritance



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

في هذه المقالة ، سنناقش مفهوم الوراثة في برمجة C ++. سنشرح مفهوم وظيفة الصديق في C ++ مع أمثلة العمل.







لماذا الميراث؟

يسمح الوراثة بإنشاء فئة جديدة أو فئة مشتقة من فئة أو فئة أساسية أخرى. سيكون للفئة المشتقة أو الفئة الفرعية جميع ميزات الفئة الأصلية أو الفئة الأساسية. يمكننا إعادة استخدام الكود بمساعدة الميراث.



نوع الإرث

هناك أنواع مختلفة من الميراث:



  1. الميراث البسيط / المنفرد
  2. الوراثة الهرمية
  3. الوراثة متعددة المستويات
  4. تعدد الميراث

في هذه المقالة ، سننظر في الميراث البسيط / الفردي فقط.





مثال 1:

الآن ، دعونا نلقي نظرة على برنامج مثال لفهم مفهوم الوراثة في C ++. لقد حددنا فئة أساسية ثم اشتقنا منها فئة أخرى. لذلك ، سيكون للفئة المشتقة الميزات (الأعضاء والوظائف) من الفئة الأساسية.

#يشمل

استخدام اسم للمحطة؛

فئة Base_Class
{
عام:
intأنا؛
فارغعرض()
{
كلفة<< 'عرض الفئة الأساسية' <<أنا<<endl؛
}

}؛

فئة Derived_Class:Base_Class العامة
{
عام:
فارغمشاهده()
{
كلفة<< عرض الفئة المشتقة <<endl؛
}
}؛

intالأساسية()
{
Derived_Class العاصمة؛
العاصمة.أنا = 100؛
العاصمة.عرض()؛
العاصمة.مشاهده()؛

إرجاع 0؛
}



المثال 2:

هذا مثال آخر على الوراثة في لغة ++ C. في هذا المثال ، سنرى كيف يتم استدعاء المُنشئين عند إنشاء كائن فئة مشتق.

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

#يشمل
استخدام اسم للمحطة؛

فئة Base_Class
{
عام:
Base_Class()
{
كلفة<< 'Base_Class - لا توجد معلمات' <<endl؛
}
Base_Class(intx)
{
كلفة<< 'Base_Class - المعلمات:' <<x<<endl؛
}
}؛

فئة Derived_Class:Base_Class العامة
{
عام:
فئة مشتقة()
{
كلفة<< 'Derived_Class - بلا معلمات' <<endl؛
}
فئة مشتقة(intو)
{
كلفة<< 'Derived_Class - المعلمات:' <<و<<endl؛
}
فئة مشتقة(intxوintو):Base_Class(x)
{
كلفة<< 'معلمة الفئة المشتقة:' <<و<<endl؛
}
}؛

intالأساسية()
{
المشتقة_الفئة د(7و19)؛
}

المثال 3:

في هذا المثال ، سنرى كيف يمكن استخدام كائنات الفئة المشتقة.

كما ترى ، هناك فئتان محددتان: Rectangle_Class و Cube_Class. Rectangle_Class هي الفئة الأساسية التي يتم اشتقاق الفئة المشتقة منها ، أي Cube_Class. لذلك ، فإننا نرث الميزات من Rectangle_Class إلى Cube_Class.

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

لقد أعلنا عن كائن من الفئة المشتقة ، ثم قمنا باستدعاء الطرق من الفئة الأساسية ، أي setLength () و setBreadth ().

#يشمل

استخدام اسم للمحطة؛

فئة Rectangle_Class
{
نشر:
intالطول؛
intسعة؛
عام:
Rectangle_Class()؛
Rectangle_Class(intالوintب)؛
Rectangle_Class(Rectangle_Class&ص)؛
intgetLength()
{
إرجاعالطول؛
}
intالحصول على اتساع()
{
إرجاعسعة؛
}
فارغاضبط الطول(intال)؛
فارغاتساع(intب)؛
intمنطقة()؛
}؛

فئة Cube_Class:Rectangle_Class العامة
{
نشر:
intارتفاع؛
عام:
Cube_Class(intح)
{
ارتفاع=ح؛
}
intالحصول على ارتفاع()
{
إرجاعارتفاع؛
}
فارغضبط الارتفاع(intح)
{
ارتفاع=ح؛
}
intالصوت()
{
إرجاعgetLength()*الحصول على اتساع()*ارتفاع؛
}
}؛


Rectangle_Class::Rectangle_Class()
{
الطول=1؛
سعة=1؛
}
Rectangle_Class::Rectangle_Class(intالوintب)
{
الطول=ال؛
سعة=ب؛
}
Rectangle_Class::Rectangle_Class(Rectangle_Class&ص)
{
الطول=ص.الطول؛
سعة=ص.سعة؛
}
فارغRectangle_Class::اضبط الطول(intال)
{
الطول=ال؛
}
فارغRectangle_Class::اتساع(intب)
{
سعة=ب؛
}
intRectangle_Class::منطقة()
{
إرجاعالطول*سعة؛
}

intالأساسية()
{
Cube_Class ج(8)؛
ج.اضبط الطول(12)؛
ج.اتساع(9)؛
كلفة<<'الحجم هو'<<ج.الصوت()<<endl؛
}

استنتاج:

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