C ++ উত্তরাধিকার

C Inheritance



অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং এর উত্তরাধিকার একটি অত্যন্ত গুরুত্বপূর্ণ বৈশিষ্ট্য। এটি প্রোগ্রামারকে একটি বিদ্যমান ক্লাস থেকে একটি ক্লাস অর্জন করতে দেয়। এটি বিশেষ করে একটি বড় জটিল প্রকল্পে খুবই উপকারী কারণ এটি প্রোগ্রামারকে কোডটি পুনরায় ব্যবহার করতে দেয়।

এই নিবন্ধে, আমরা C ++ প্রোগ্রামিংয়ে উত্তরাধিকার ধারণা নিয়ে আলোচনা করতে যাচ্ছি। আমরা কাজের উদাহরণ সহ C ++ এ বন্ধু ফাংশনের ধারণা ব্যাখ্যা করব।







উত্তরাধিকার কেন?

উত্তরাধিকার অন্য শ্রেণী বা বেস শ্রেণী থেকে একটি নতুন শ্রেণী বা উদ্ভূত শ্রেণী তৈরির অনুমতি দেয়। প্রাপ্ত শ্রেণী বা শিশু শ্রেণীতে অভিভাবক শ্রেণী বা বেস শ্রেণীর সকল বৈশিষ্ট্য থাকবে। আমরা উত্তরাধিকার সহায়তায় কোডটি পুনরায় ব্যবহার করতে পারি।



উত্তরাধিকার প্রকার

উত্তরাধিকার বিভিন্ন ধরনের আছে:



  1. সরল/একক উত্তরাধিকার
  2. অনুক্রমিক উত্তরাধিকার
  3. বহুস্তরীয় উত্তরাধিকার
  4. একাধিক উত্তরাধিকার

এই নিবন্ধে, আমরা কেবল সহজ/একক উত্তরাধিকার বিবেচনা করতে যাচ্ছি।





উদাহরণ 1:

এখন, আসুন C ++ এ উত্তরাধিকার ধারণাটি বোঝার জন্য একটি উদাহরণ প্রোগ্রাম দেখি। আমরা একটি বেস শ্রেণী সংজ্ঞায়িত করেছি এবং তারপর এটি থেকে আরেকটি শ্রেণী বের করেছি। অতএব, উদ্ভূত শ্রেণীর বেস ক্লাস থেকে বৈশিষ্ট্য (সদস্য এবং ফাংশন) থাকবে।

#অন্তর্ভুক্ত

নামস্থান std ব্যবহার করে;

ক্লাস বেস_ক্লাস
{
জনসাধারণ:
intআমি;
শূন্যপ্রদর্শন()
{
খরচ<< 'বেস ক্লাসের প্রদর্শন' <<আমি<<endl;
}

};

ক্লাস Derived_Class:পাবলিক বেস_ক্লাস
{
জনসাধারণ:
শূন্যদেখান()
{
খরচ<< 'ডেরিভেড ক্লাসের শো' <<endl;
}
};

intপ্রধান()
{
Derived_Class ডিসি;
ডিসিআমি = 100;
ডিসিপ্রদর্শন();
ডিসিদেখান();

প্রত্যাবর্তন 0;
}



উদাহরণ 2:

এটি C ++ এ উত্তরাধিকারের আরেকটি উদাহরণ। এই উদাহরণে, আমরা দেখতে যাচ্ছি কিভাবে একটি নির্ধারিত শ্রেণীর বস্তু তৈরি করা হলে কন্সট্রাকটর বলা হয়।

আপনি নীচে দেখতে পারেন, আমরা দুটি বেস ক্লাস কন্সট্রাকটর এবং তিনটি ডেরিভেড ক্লাস কনস্ট্রাক্টর সংজ্ঞায়িত করেছি। আপনি নিচের আউটপুট থেকে স্পষ্টভাবে লক্ষ্য করতে পারেন যে, উৎপন্ন শ্রেণীর কনস্ট্রাক্টর বলা হওয়ার আগে বেস ক্লাস কনস্ট্রাক্টরকে প্রথমে বলা হয়।

#অন্তর্ভুক্ত
নামস্থান std ব্যবহার করে;

ক্লাস বেস_ক্লাস
{
জনসাধারণ:
বেস_ক্লাস()
{
খরচ<< 'বেস_ক্লাস - কোন প্যারামিটার নেই' <<endl;
}
বেস_ক্লাস(intএক্স)
{
খরচ<< 'Base_Class - পরামিতি:' <<এক্স<<endl;
}
};

ক্লাস Derived_Class:পাবলিক বেস_ক্লাস
{
জনসাধারণ:
Derived_Class()
{
খরচ<< 'Derived_Class - কোন পরামিতি নেই' <<endl;
}
Derived_Class(intএবং)
{
খরচ<< 'Derived_Class - পরামিতি:' <<এবং<<endl;
}
Derived_Class(intএক্স,intএবং):বেস_ক্লাস(এক্স)
{
খরচ<< 'Derived_Class এর পরম:' <<এবং<<endl;
}
};

intপ্রধান()
{
Derived_Class d(7,19);
}

উদাহরণ 3:

এই উদাহরণে, আমরা দেখতে যাচ্ছি কিভাবে উদ্ভূত শ্রেণীর বস্তু ব্যবহার করা যায়।

আপনি দেখতে পাচ্ছেন, দুটি শ্রেণী সংজ্ঞায়িত করা হয়েছে: আয়তক্ষেত্র_ক্লাস এবং কিউব_ক্লাস। Rectangle_Class হল বেস ক্লাস যা থেকে উদ্ভূত শ্রেণী, যেমন, Cube_Class এর উৎপত্তি। অতএব, আমরা আয়তক্ষেত্র_ক্লাস থেকে কিউব_ক্লাস পর্যন্ত বৈশিষ্ট্যগুলি উত্তরাধিকারসূত্রে পেয়েছি।

এছাড়াও, আপনি লক্ষ্য করতে পারেন যে আমরা পাবলিক অ্যাক্সেস কন্ট্রোল দিয়ে Cube_Class উত্তরাধিকারসূত্রে পেয়েছি। এর মানে হল যে উদ্ভূত শ্রেণী বেস শ্রেণীর সমস্ত অ-ব্যক্তিগত সদস্যদের অ্যাক্সেস করতে পারে।

আমরা উদ্ভূত শ্রেণীর একটি বস্তু ঘোষণা করেছি, এবং তারপর বেস ক্লাস থেকে পদ্ধতিগুলি কল করি, যেমন, setLength () এবং setBreadth ()।

#অন্তর্ভুক্ত

নামস্থান std ব্যবহার করে;

আয়তক্ষেত্র_ক্লাস
{
ব্যক্তিগত:
intদৈর্ঘ্য;
intপ্রস্থ;
জনসাধারণ:
আয়তক্ষেত্র_ক্লাস();
আয়তক্ষেত্র_ক্লাস(intদ্য,int);
আয়তক্ষেত্র_ক্লাস(আয়তক্ষেত্র_ক্লাস&আর);
intদৈর্ঘ্য পান()
{
প্রত্যাবর্তনদৈর্ঘ্য;
}
intgetBreadth()
{
প্রত্যাবর্তনপ্রস্থ;
}
শূন্যসেট লেন্থ(intদ্য);
শূন্যসেট প্রস্থ(int);
intএলাকা();
};

ক্লাস Cube_Class:পাবলিক আয়তক্ষেত্র_ক্লাস
{
ব্যক্তিগত:
intউচ্চতা;
জনসাধারণ:
কিউব_ক্লাস(int)
{
উচ্চতা=;
}
intউচ্চতা পান()
{
প্রত্যাবর্তনউচ্চতা;
}
শূন্যসেট উচ্চতা(int)
{
উচ্চতা=;
}
intআয়তন()
{
প্রত্যাবর্তনদৈর্ঘ্য পান()*getBreadth()*উচ্চতা;
}
};


আয়তক্ষেত্র_ক্লাস::আয়তক্ষেত্র_ক্লাস()
{
দৈর্ঘ্য=;
প্রস্থ=;
}
আয়তক্ষেত্র_ক্লাস::আয়তক্ষেত্র_ক্লাস(intদ্য,int)
{
দৈর্ঘ্য=দ্য;
প্রস্থ=;
}
আয়তক্ষেত্র_ক্লাস::আয়তক্ষেত্র_ক্লাস(আয়তক্ষেত্র_ক্লাস&আর)
{
দৈর্ঘ্য=আরদৈর্ঘ্য;
প্রস্থ=আরপ্রস্থ;
}
শূন্যআয়তক্ষেত্র_ক্লাস::সেট লেন্থ(intদ্য)
{
দৈর্ঘ্য=দ্য;
}
শূন্যআয়তক্ষেত্র_ক্লাস::সেট প্রস্থ(int)
{
প্রস্থ=;
}
intআয়তক্ষেত্র_ক্লাস::এলাকা()
{
প্রত্যাবর্তনদৈর্ঘ্য*প্রস্থ;
}

intপ্রধান()
{
Cube_Class গ(8);
গ।সেট লেন্থ(12);
গ।সেট প্রস্থ(9);
খরচ<<'ভলিউম হল'<<গ।আয়তন()<<endl;
}

উপসংহার:

এই নিবন্ধে, আমি উত্তরাধিকার ধারণাটি ব্যাখ্যা করেছি সি ++ । C ++ একাধিক উত্তরাধিকার সহ বিভিন্ন ধরণের উত্তরাধিকার সমর্থন করে (যেমন, একাধিক বেস ক্লাস বা প্যারেন্ট ক্লাস থেকে উত্তরাধিকারসূত্রে বৈশিষ্ট্যগুলি)। যাইহোক, এটি সহজ করার জন্য, আমি এখানে শুধুমাত্র একক উত্তরাধিকার বিবেচনা করেছি। আমি কিভাবে C ++ প্রোগ্রামিংয়ে উত্তরাধিকার ব্যবহার করতে পারি এবং কোডটি পুনরায় ব্যবহার করতে পারি তা ব্যাখ্যা করার জন্য আমি তিনটি কাজের উদাহরণ দেখিয়েছি। তাছাড়া, এটি C ++ এর একটি খুব দরকারী বৈশিষ্ট্য।