C ++ وراثت۔

C Inheritance



وراثت آبجیکٹ پر مبنی پروگرامنگ کی ایک بہت اہم خصوصیت ہے۔ یہ پروگرامر کو موجودہ کلاس سے کلاس حاصل کرنے کی اجازت دیتا ہے۔ یہ خاص طور پر ایک بڑے پیچیدہ منصوبے میں بہت مفید ہے کیونکہ یہ پروگرامر کوڈ کو دوبارہ استعمال کرنے کی اجازت دیتا ہے۔

اس آرٹیکل میں ، ہم C ++ پروگرامنگ میں وراثت کے تصور پر بات کرنے جا رہے ہیں۔ ہم کام کی مثالوں کے ساتھ C ++ میں فرینڈ فنکشن کے تصور کی وضاحت کریں گے۔







وراثت کیوں؟

وراثت ایک نئی کلاس یا دوسری کلاس یا بیس کلاس سے اخذ کردہ کلاس بنانے کی اجازت دیتی ہے۔ اخذ کردہ کلاس یا چائلڈ کلاس میں پیرنٹ کلاس یا بیس کلاس کی تمام خصوصیات ہوں گی۔ ہم وراثت کی مدد سے کوڈ کو دوبارہ استعمال کر سکتے ہیں۔



وراثت کی قسم۔

وراثت کی مختلف اقسام ہیں:



  1. سادہ/واحد وراثت۔
  2. درجہ بندی وراثت۔
  3. کثیر سطحی وراثت۔
  4. ایک سے زیادہ وراثت۔

اس مضمون میں ، ہم صرف سادہ/واحد وراثت پر غور کرنے جا رہے ہیں۔





مثال 1:

اب ، آئیے C ++ میں وراثت کے تصور کو سمجھنے کے لیے ایک مثال کے پروگرام کو دیکھیں۔ ہم نے ایک بیس کلاس کی وضاحت کی ہے اور پھر اس سے ایک اور کلاس اخذ کی ہے۔ لہذا ، اخذ کردہ کلاس میں بیس کلاس سے خصوصیات (ممبران اور افعال) ہوں گے۔

#شامل کریں

نام کی جگہ کا استعمال کرتے ہوئے std؛

کلاس بیس_کلاس۔
{
عوام:
intمیں؛
باطلڈسپلے()
{
لاگت<< 'بیس کلاس کی نمائش' <<میں<<endl؛
}

}؛

کلاس Derived_Class:پبلک بیس_کلاس۔
{
عوام:
باطلدکھائیں()
{
لاگت<< 'ماخوذ کلاس کا شو' <<endl؛
}
}؛

intمرکزی()
{
Derived_Class dc؛
ڈی سی.میں = 100۔؛
ڈی سی.ڈسپلے()؛
ڈی سی.دکھائیں()؛

واپسی ؛
}



مثال 2:

یہ C ++ میں وراثت کی ایک اور مثال ہے۔ اس مثال میں ، ہم یہ دیکھنے جا رہے ہیں کہ جب ڈریویٹڈ کلاس آبجیکٹ بنتی ہے تو کنسٹرکٹرز کو کیسے بلایا جاتا ہے۔

جیسا کہ آپ ذیل میں دیکھ سکتے ہیں ، ہم نے دو بیس کلاس کنسٹرکٹرز اور تین ڈرائیوڈ کلاس کنسٹرکٹرز کی وضاحت کی ہے۔ آپ نیچے دی گئی آؤٹ پٹ سے واضح طور پر دیکھ سکتے ہیں کہ بیس کلاس کنسٹرکٹر کو پہلے بلایا گیا ہے اس سے پہلے کہ ماخوذ کلاس کنسٹرکٹر کہا جائے۔

#شامل کریں
نام کی جگہ کا استعمال کرتے ہوئے std؛

کلاس بیس_کلاس۔
{
عوام:
بیس_کلاس۔()
{
لاگت<< 'بیس_کلاس - کوئی پیرامیٹر نہیں' <<endl؛
}
بیس_کلاس۔(intایکس)
{
لاگت<< 'بیس_کلاس - پیرامیٹرز:' <<ایکس<<endl؛
}
}؛

کلاس Derived_Class:پبلک بیس_کلاس۔
{
عوام:
ماخوذ_کلاس۔()
{
لاگت<< 'ماخوذ_کلاس - کوئی پیرامیٹر نہیں' <<endl؛
}
ماخوذ_کلاس۔(intاور)
{
لاگت<< 'Derived_Class - پیرامیٹرز:' <<اور<<endl؛
}
ماخوذ_کلاس۔(intایکس،intاور):بیس_کلاس۔(ایکس)
{
لاگت<< 'ماخوذ_کلاس کا پیرام:' <<اور<<endl؛
}
}؛

intمرکزی()
{
ماخوذ_کلاس d۔(،19۔)؛
}

مثال 3:

اس مثال میں ، ہم دیکھیں گے کہ کس طرح اخذ کردہ کلاس اشیاء کو استعمال کیا جا سکتا ہے۔

جیسا کہ آپ دیکھ سکتے ہیں ، دو کلاسیں متعین ہیں: مستطیل_کلاس اور کیوب_کلاس۔ Rectangle_Class وہ بیس کلاس ہے جہاں سے اخذ کردہ کلاس یعنی Cube_Class اخذ کیا گیا ہے۔ لہذا ، ہم مستطیل_کلاس سے کیوب_کلاس تک کی خصوصیات وراثت میں لے رہے ہیں۔

نیز ، آپ دیکھ سکتے ہیں کہ ہم عوامی رسائی کنٹرول کے ساتھ کیوب_کلاس وراثت میں مل رہے ہیں۔ اس کا مطلب یہ ہے کہ اخذ کردہ کلاس بیس کلاس کے تمام غیر نجی ممبروں تک رسائی حاصل کر سکتی ہے۔

ہم نے اخذ کردہ کلاس کی ایک شے کا اعلان کیا ہے ، اور پھر بیس کلاس سے طریقوں کو کال کریں ، یعنی setLength () اور setBreadth ()۔

#شامل کریں

نام کی جگہ کا استعمال کرتے ہوئے std؛

کلاس مستطیل_کلاس۔
{
نجی:
intلمبائی؛
intچوڑائی؛
عوام:
مستطیل_کلاس۔()؛
مستطیل_کلاس۔(intکی،intب)؛
مستطیل_کلاس۔(مستطیل_کلاس۔&r)؛
intلمبائی حاصل کریں()
{
واپسیلمبائی؛
}
intgetBreadth()
{
واپسیچوڑائی؛
}
باطلسیٹ لمبائی(intکی)؛
باطلسیٹ بریڈتھ(intب)؛
intرقبہ()؛
}؛

کلاس کیوب_کلاس۔:عوامی مستطیل_کلاس۔
{
نجی:
intاونچائی؛
عوام:
کیوب_کلاس۔(inth)
{
اونچائی=h؛
}
intاونچائی حاصل کریں()
{
واپسیاونچائی؛
}
باطلسیٹ اونچائی(inth)
{
اونچائی=h؛
}
intحجم()
{
واپسیلمبائی حاصل کریں()*getBreadth()*اونچائی؛
}
}؛


مستطیل_کلاس۔::مستطیل_کلاس۔()
{
لمبائی=؛
چوڑائی=؛
}
مستطیل_کلاس۔::مستطیل_کلاس۔(intکی،intب)
{
لمبائی=کی؛
چوڑائی=ب؛
}
مستطیل_کلاس۔::مستطیل_کلاس۔(مستطیل_کلاس۔&r)
{
لمبائی=rلمبائی؛
چوڑائی=rچوڑائی؛
}
باطلمستطیل_کلاس۔::سیٹ لمبائی(intکی)
{
لمبائی=کی؛
}
باطلمستطیل_کلاس۔::سیٹ بریڈتھ(intب)
{
چوڑائی=ب؛
}
intمستطیل_کلاس۔::رقبہ()
{
واپسیلمبائی*چوڑائی؛
}

intمرکزی()
{
Cube_Class c()؛
جسیٹ لمبائی(12۔)؛
جسیٹ بریڈتھ()؛
لاگت<<'حجم ہے'<<جحجم()<<endl؛
}

نتیجہ:

اس مضمون میں ، میں نے وراثت کے تصور کی وضاحت کی ہے۔ سی ++۔ . C ++ وراثت کی مختلف اقسام کی حمایت کرتا ہے جس میں ایک سے زیادہ وراثت (یعنی متعدد بیس کلاس یا پیرنٹ کلاس سے وراثت کی خصوصیات) شامل ہیں۔ تاہم ، اسے آسان بنانے کے لیے ، میں نے یہاں صرف ایک وراثت پر غور کیا ہے۔ میں نے تین کام کرنے والی مثالیں دکھائی ہیں کہ ہم C ++ پروگرامنگ میں وراثت کو کیسے استعمال کر سکتے ہیں اور کوڈ کو دوبارہ استعمال کر سکتے ہیں۔ مزید یہ کہ یہ C ++ کی ایک بہت مفید خصوصیت ہے۔