সি ++ তে উত্তরাধিকার সম্পর্কে আপনার যা জানা দরকার



এই নিবন্ধটি আপনাকে সি ++ তে উত্তরাধিকার সম্পর্কিত একটি বিস্তৃত এবং বিস্তৃত জ্ঞান সরবরাহ করবে, এটি বিভিন্ন ধরণের এবং কীভাবে এটি প্রয়োগ করা যায়।

সি ++ একটি অবজেক্ট-ওরিয়েন্টেড ভাষা। ডেটা বিমূর্তি, পলিমারফিজম, এনক্যাপসুলেশন এবং উত্তরাধিকার OOP এর মূল ভিত্তি। এই পোস্টে, আমরা বুঝতে পারি উত্তরাধিকার কী? সি ++ এ উত্তরাধিকারের ধরণ এবং স্ক্র্যাচ থেকে এটি সম্পর্কিত সমস্ত প্রয়োজনীয় ধারণা। শেষ পর্যন্ত, আমরা এই শক্তিশালী ধারণাটির অপূর্ণতাও দেখব এবং এটি সমাধান করার চেষ্টা করব।

সি ++ এ উত্তরাধিকার কী

উত্তরাধিকার হ'ল সি ++ বা অন্য কোনও অবজেক্ট-ভিত্তিক ভাষার অন্যতম শক্তিশালী এবং বহুল ব্যবহৃত ধারণা। এই ধারণাটি বোঝার জন্য শ্রেণি এবং অবজেক্টগুলির সামান্য জ্ঞান প্রয়োজন। উত্তরাধিকার ব্যবহার করে আমরা একটি ক্লাস তৈরি করতে পারি যা সাধারণ পদ্ধতি এবং বৈশিষ্ট্যগুলি নিয়ে গঠিত। এই শ্রেণিটি আরও নির্দিষ্ট পদ্ধতি সহ অন্যান্য শ্রেণীর দ্বারা উত্তরাধিকার সূত্রে প্রাপ্ত হতে পারে।





সি ++ এ উত্তরাধিকার

এটি করে আমাদের বারবার একই কার্যকারিতা লিখতে হবে না যা সময় সাশ্রয় করে এবং কোডের পঠনযোগ্যতা বৃদ্ধি করে।



বাক্য গঠন:

ক্লাস ডেরিভড_ ক্লাস: অ্যাক্সেস_ টাইপ বেস_ক্লাস {// ক্লাস বডি}

বেস শ্রেণি: কোড পাঠযোগ্যতা বাড়াতে অন্যান্য শ্রেণি দ্বারা ভাগ করা যায় এমন সমস্ত সাধারণ পদ্ধতি এবং বৈশিষ্ট্য নিয়ে গঠিত শ্রেণিকে একটি বেস শ্রেণি বলা হয়।

উত্পন্ন শ্রেণি: যে শ্রেণিতে আরও সুনির্দিষ্ট পদ্ধতি থাকে এবং একটি শ্রেণীর উত্তরাধিকার সূত্রে প্রাপ্ত তাকে শ্রেণীবদ্ধ বলা হয়। একটি উদ্ভূত বর্গ অন্যান্য কিছু উত্পন্ন শ্রেণীর জন্যও একটি বেস শ্রেণি হতে পারে।



আমরা যদি কিছু বৈশিষ্ট্য এবং পদ্ধতি সহ XYZ শ্রেণি তৈরি করি। এখন একটি শ্রেণীর শিক্ষার্থীর আরও কিছু বৈশিষ্ট্য থাকবে তবে এতে XYZ শ্রেণির উপাদানগুলিও অন্তর্ভুক্ত থাকবে এবং এটি অনুষদ শ্রেণীর ক্ষেত্রেও একই রকম হবে। আসুন একটি চিত্র দেখুন:

সুতরাং, ছাত্র এবং অনুষদ শ্রেণি এক্সওয়াইজেড থেকে উত্তরাধিকারী হবে।

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

উপরের সমস্যা সমাধানের জন্য সি ++ প্রাপ্ত বর্গের বেস বর্গ বৈশিষ্ট্যের অ্যাক্সেসকে সীমাবদ্ধ করতে অ্যাক্সেস স্পেসিফায়ার ব্যবহার করে। সি ++ এ মোট 3 ধরণের অ্যাক্সেস স্পেসিফায়ার রয়েছে

  1. পাবলিক
  2. ব্যক্তিগত
  3. সুরক্ষিত

নীচের টেবিলটি আপনাকে বিভিন্ন অ্যাক্সেস স্পেসিফায়ার অনুযায়ী ডেরাইভেড ক্লাস দ্বারা কী ধরণের ডেটা অ্যাক্সেস করতে পারে তার একটি ভাল ধারণা দেবে।

অ্যাক্সেস স্পেসিফায়ার পাবলিক ডেটা ব্যক্তিগত তথ্য সুরক্ষিত ডেটা
ব্যক্তিগত উত্তরাধিকারী নয়উত্তরাধিকারী নয়উত্তরাধিকারী নয়
সুরক্ষিত সুরক্ষিত ব্যক্তিগত সুরক্ষিত
পাবলিক পাবলিক ব্যক্তিগত সুরক্ষিত

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

একক উত্তরাধিকার উত্তরাধিকারের সরল ভ্যানিলা রূপ হিসাবে বিবেচনা করা যেতে পারে। একক উত্তরাধিকারে, একটি একক শ্রেণি একটি বেস বর্গ থেকে উত্তরাধিকার সূত্রে প্রাপ্ত।

# নেমস্পেস স্ট্যান্ড ক্লাস ট্রেন ব্যবহার করে অন্তর্ভুক্ত করুন নাম্বার কোয়েল পাবলিক নাম্বার কোচ পাবলিক: অকার্যকর ট্রেনিনফো (ইনট এন, ইনট মি) {সংখ্যাফুইয়েলস = এন নাম্বার কোচ = এম} শূন্য শোইনফো () out কোট<উত্তরাধিকারের এই ক্ষেত্রেটিকে মাল্টিলেভেল উত্তরাধিকার হিসাবে ডাকা হয়। প্রথম থেকে শেষ শ্রেণির মধ্যবর্তী শ্রেণিটি একটি মধ্যবর্তী বেস শ্রেণি হিসাবেও পরিচিত।আপনার কী ধারণা, শেষ শ্রেণি প্রথম শ্রেণির সদস্যদের উত্তরাধিকারী হতে পারে? বনভ

# নেমস্পেসের স্ট্যান্ড ক্লাসটি ব্যবহার করে অন্তর্ভুক্ত করুন প্রথম a সুরক্ষিত: একটি জনসাধারণ: অকার্যকর গেইনফোফার্স্ট (ইনট এক্স) {এ = এক্স oid শূন্য শোইনফোরস্ট () d স্টাড :: কোট<< 'Value of a = ' < 

আউটপুট:

A = 10 এর মান

খ = 20 এর মান

গ = 30 এর মান

ডি = 50 এর মান

শ্রেণিবদ্ধ উত্তরাধিকার In

একক বা বহুস্তরের উত্তরাধিকার সাহায্যে কিছু সমস্যা সমাধান করা যায় না। শ্রেণিবদ্ধ উত্তরাধিকারে, একক বেস শ্রেণীর 1 টিরও বেশি শ্রেণি উত্তরাধিকার সূত্রে প্রাপ্ত।

# নেমস্পেস স্ট্যান্ড ক্লাস কলেজ College পাবলিক: কলেজ () {কোট ব্যবহার করে অন্তর্ভুক্ত করুন<< 'We are in class College' << endl } } class Student: public College { } class Faculty: public College { } int main() { Student student Faculty faculty return 0 }

আউটপুট:

আমরা ক্লাস কলেজে পড়েছি

আমরা ক্লাস কলেজে পড়েছি

সি ++ এ একাধিক উত্তরাধিকার

আমরা শ্রেণিবদ্ধ উত্তরাধিকারে দেখেছি একটি বেস ক্লাসে একাধিক উত্সযুক্ত শ্রেণি ছিল। একাধিক উত্তরাধিকারে একটি উত্পন্ন শ্রেণীর একাধিক বেস শ্রেণি থাকে।

# নেমস্পেস স্ট্যান্ড ক্লাস ওয়ান ব্যবহারের অন্তর্ভুক্ত using সুরক্ষিত: ইন পাবলিক: শূন্যপদ getinfoOne (int x) {a = x}} Class two {সুরক্ষিত: int b পাবলিক: অকার্যকর getinfoTwo (int y) {b = y}} Class প্রধান: পাবলিক ওয়ান, পাবলিক টু {পাবলিক: অকার্যকর প্রদর্শন () {স্টাড :: কোট out<< 'Value of a = ' < এই মুহুর্তে, আমাদের C ++ এ ব্যবহৃত সমস্ত ধরণের উত্তরাধিকার সম্পর্কে ভাল ধারণা রয়েছে। তবে, অপেক্ষা করুন, যদি আমরা 2 বিভিন্ন ধরণের উত্তরাধিকার ব্যবহার করতে চাই? এটা কি সম্ভব? হ্যাঁ, সংকর উত্তরাধিকারের সাহায্যে এটি সম্ভব। সংকর উত্তরাধিকারে, আমরা 2 বিভিন্ন ধরণের উত্তরাধিকারকে একত্রিত করি। উদাহরণস্বরূপ- বহুস্তর এবং একাধিক উত্তরাধিকার, শ্রেণিবদ্ধ এবং একাধিক উত্তরাধিকার ইত্যাদি

# নেমস্পেস স্ট্যান্ড ক্লাস ওয়ার্ল্ড {সুরক্ষিত ব্যবহার: অন্তর্ভুক্ত একটি জনসাধারণ: শূন্য রুদ্ধরাজ্য ওয়ার্ড (ইনট এক্স) = এ = এক্স} Contin শ্রেণীর মহাদেশ: পাবলিক ওয়ার্ল্ড {সুরক্ষিত: ইনট বি পাবলিক: অকার্যকর getinfoContferences (int y) {b = y}} শ্রেণীর দেশ {সুরক্ষিত: int d পাবলিক: অকার্যকর getinfoCountry (int m) {d = m}} শ্রেণি অস্ট্রেলিয়া: পাবলিক কন্টিনেন্ট, পাবলিক দেশ {পাবলিক: অকার্যকর প্রদর্শন () std :: cout<< 'Value of a = ' < 

আসুন উপরের চিত্রটি বুঝতে পারি যা হীরা সমস্যা বুঝতে আমাদের সহায়তা করবে। ক্লাস বি এবং ক্লাস সি ক্লাস এ থেকে উত্তরাধিকার সূত্রে ক্লাস 'এ' এবং 'ক্লাস বি' উভয় শ্রেণির এ এর ​​বৈশিষ্ট্য এবং পদ্ধতি রয়েছে তবে ক্লাস ডি ক্লাস বি থেকে উত্তরাধিকার সূত্রে পাশাপাশি শ্রেণি সি শ্রেণি ডিতে ক্লাস বি এবং শ্রেণি সি এর সমস্ত গুণাবলী রয়েছে এটি ক্লাস বি এর পাশাপাশি বর্গ সি এর উত্তরাধিকার সূত্রে প্রাপ্ত সমস্ত বৈশিষ্ট্যও রয়েছে তাই আমরা যদি ডি ক্লাসের একটি বস্তু তৈরি করি এবং ক্লাস এ এর ​​কোনও পদ্ধতি বলি তবে একটি দ্বিপাক্ষিক পরিস্থিতি তৈরি হবে এবং সংকলক কোথা থেকে বিভ্রান্ত হবে from এটি ক্লাস বি বা ক্লাস ডি থেকে এ শ্রেণির পদ্ধতি হওয়া উচিত

এই অস্পষ্টতা সমাধানের জন্য আমরা ভার্চুয়াল বেস ক্লাস নামে একটি ধারণা ব্যবহার করি। যখন আমরা একটি বেস ক্লাস করি তখন ভার্চুয়াল বেস ক্লাসটি ভার্চুয়াল বেস ক্লাস এবং উত্পন্ন শ্রেণীর মধ্যে বিদ্যমান পাথের সংখ্যা নির্বিশেষে class শ্রেণীর কেবলমাত্র একটি অনুলিপি উত্তরাধিকার সূত্রে প্রাপ্ত হয়।

ক্লাস এ {} ক্লাস বি: ভার্চুয়াল পাবলিক এ}} ক্লাস সি: ভার্চুয়াল পাবলিক এ {} ক্লাস ডি: পাবলিক সি, পাবলিক ডি}

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

আমাদের জন্য একটি প্রশ্ন আছে? দয়া করে এই ব্লগের মন্তব্য বিভাগে এটি উল্লেখ করুন এবং আমরা যত তাড়াতাড়ি সম্ভব আপনার কাছে ফিরে আসব।