ডাইনামিক_কাস্ট C++

Da Inamika Kasta C



C++ প্রোগ্রামিং ভাষার গতিশীল কাস্ট এই নিবন্ধে আলোচনা করা হবে। শুরু করার জন্য, আমাদের অবশ্যই ঢালাইয়ের ধারণা এবং বিভিন্ন ধরণের কাস্টিং বুঝতে হবে। একটি ভেরিয়েবলের ডেটা টাইপ পরিবর্তন করার প্রক্রিয়াটি কাস্টিং নামে পরিচিত। C++ প্রোগ্রামিং ভাষায় কাস্টিংকে দুটি বিভাগে ভাগ করা হয়েছে: অন্তর্নিহিত কাস্টিং এবং স্পষ্ট কাস্টিং।

C++ এ ডেটা টাইপ রূপান্তর:

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

  গ্রাফিকাল ইউজার ইন্টারফেস, টেক্সট, অ্যাপ্লিকেশন বর্ণনা স্বয়ংক্রিয়ভাবে তৈরি







প্রদত্ত কোডে, আমরা দেখতে পাচ্ছি যে শেষ লাইনের অভিব্যক্তিতে একটি পূর্ণসংখ্যা ভেরিয়েবল এবং একটি অক্ষর ভেরিয়েবল সন্নিবেশ করা হয়েছে এবং পূর্ণসংখ্যা ভেরিয়েবল 'i' এর মান পরিবর্তন করা হয়েছে। 'a' এর সমতুল্য ASCII সংখ্যাটি একটি অক্ষর মানতে রূপান্তরিত হবে এবং এই বিবৃতিতে 'i' ভেরিয়েবলের পূর্ণসংখ্যা মানের সাথে যোগ করা হবে। যদি 'i' ভেরিয়েবলের মান প্রিন্ট করা হয়, ফলাফলটি এই দুটি মানের মোট হবে। কম্পাইলার স্বয়ংক্রিয়ভাবে ক্যারেক্টার ভেরিয়েবলের ডাটা টাইপটিকে ডানদিকের বর্ণমালার ASCII স্ট্যান্ডার্ড মানতে রূপান্তর করে একটি পূর্ণসংখ্যা ডাটা টাইপে রূপান্তরিত করে, যা রান টাইমে অন্তর্নিহিত বা স্বয়ংক্রিয় টাইপ রূপান্তরের একটি দুর্দান্ত উদাহরণ।



এখন, যখন স্পষ্ট টাইপ কাস্টিং বা টাইপ রূপান্তরের কথা আসে, এটি একটি স্বয়ংক্রিয় প্রক্রিয়া নয়; ব্যবহারকারীকে অবশ্যই একটি ভেরিয়েবলের ডেটা টাইপকে কোডের অন্য ধরনের ভেরিয়েবলে রূপান্তর করতে হবে। ডেটা টাইপগুলি সাধারণত তাদের মেমরির স্থান এবং তারা যে পরিমাণ তথ্য ধারণ করতে পারে তার উপর ভিত্তি করে একটি অনুক্রমে সাজানো হয়। সুতরাং, যখন একটি নিম্ন অর্ডার ডেটা টাইপ ব্যবহার করা হয় কোনো তথ্য সঞ্চয় করার জন্য কিন্তু একটি উচ্চ-ক্রমের ডেটা টাইপে রূপান্তরিত করতে হয় যাতে তথ্যের ক্ষতি কম করা যায় এবং আরও বেশি তথ্য সংরক্ষণ করা যায়, স্পষ্ট টাইপ কাস্টিং বা টাইপ কনভার্সন সাধারণত সম্পন্ন. উদাহরণস্বরূপ, যেহেতু একটি পূর্ণসংখ্যা টাইপ ভেরিয়েবল দশমিক বিন্দুর পরে মান সংরক্ষণ করতে পারে না, আমরা যদি পূর্ণসংখ্যা ভেরিয়েবল ব্যবহার করতে থাকি তবে আমরা কিছু তথ্য হারাতে পারি। এই ক্ষতি এড়াতে, আমরা পূর্ণসংখ্যা ভেরিয়েবলকে ফ্লোট ভেরিয়েবলে রূপান্তর করি, দশমিক বিন্দুর পরে মান সংরক্ষণ করি এবং তথ্যের ক্ষতি রোধ করি। C++ প্রোগ্রামিং ভাষায় স্পষ্ট টাইপ রূপান্তর দুটি উপায়ের একটিতে সম্পন্ন করা যেতে পারে: অ্যাসাইনমেন্টের মাধ্যমে বা কাস্ট অপারেটর ব্যবহার করে। অ্যাসাইনমেন্ট রূপান্তরটি একটি কোড এক্সপ্রেশনে করা হয় এবং এই এক্সপ্রেশনের জন্য সিনট্যাক্স নীচে দেওয়া হয়েছে।



# '(ডেটা টাইপ) এক্সপ্রেশন'

উপরের কোডে, আমাদের অবশ্যই বন্ধনীর মধ্যে একটি বৈধ ডেটা টাইপ রাখতে হবে, এবং বন্ধনীর পরে, আমাদের অবশ্যই ভেরিয়েবল বা এক্সপ্রেশন লিখতে হবে যা আমরা বন্ধনীর ভিতরে লেখা ডেটা টাইপে পরিবর্তন করতে চাই।





এখন আমরা C++ প্রোগ্রামিং ভাষায় কাস্ট অপারেটরদের দ্বারা করা রূপান্তরের ধরণটি দেখব। কাস্ট অপারেটরদেরকে ইউনারি অপারেটরও বলা হয় যা একটি ভেরিয়েবলকে তার ডেটা টাইপ বিদ্যমান একটি থেকে অন্যটিতে পরিবর্তন করতে বাধ্য করে। চার ধরনের কাস্টিং কাস্ট অপারেটর রয়েছে: স্ট্যাটিক কাস্ট, ডায়নামিক কাস্ট, কনস্ট কাস্ট এবং রি-ইন্টারপ্রেট কাস্ট।

C++ এ ডায়নামিক কাস্টিং:

C++ প্রোগ্রামিং ভাষায় ডায়নামিক কাস্টিং RTTI (রান টাইপ টাইপ আইডেন্টিফিকেশন) নামক একটি ধারণার উপর ভিত্তি করে। RTTI হল একটি ফাংশন যা C/C++, Ada এবং অবজেক্ট প্যাসকেলের মতো বিভিন্ন প্রোগ্রামিং ভাষায় উপস্থিত। রান-টাইম টাইপ আইডেন্টিফিকেশন বা তথ্য হল একটি ফাংশন যা একটি প্রোগ্রামের রান টাইমে একটি অবজেক্টের ডাটা টাইপের বিশদ সম্পর্কিত তথ্য সনাক্ত করে এবং বের করে। এই ফাংশনটি 'টাইপইড' ফাংশন বা ডায়নামিক টাইপ কাস্টিংয়ের মতো টাইপ কাস্টিং পদ্ধতিগুলির জন্য একটি নিরাপদ পথ সরবরাহ করে। এটি রান টাইমে ডেটা টাইপ তথ্য সনাক্ত করে এবং অপারেটরদের খেলার সময় ডেটা টাইপ রূপান্তর করতে সহায়তা করে।



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

# 'ডাইনামিক_কাস্ট <নতুন_টাইপ>(এক্সপ্রেশন)'

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

এখন যেহেতু আমরা জানি কিভাবে ডায়নামিক কাস্ট অপারেটর ব্যবহার করতে হয় এবং ভেরিয়েবলের ডাটা টাইপ রূপান্তর করার জন্য প্যারামিটারগুলি পূরণ করতে হয়, আমরা ভেরিয়েবলের ডাটা প্রকার রূপান্তর করতে এটি ব্যবহার করতে পারি।

উবুন্টু 20.04 এ ডায়নামিক কাস্ট পদ্ধতি ব্যবহার করা:

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

  গ্রাফিকাল ইউজার ইন্টারফেস, টেক্সট বর্ণনা স্বয়ংক্রিয়ভাবে তৈরি

সংরক্ষণ বোতামে ক্লিক করার পরে ফাইল থেকে প্রস্থান করুন। টার্মিনালে ফিরে যান এবং আপনার ফাইলের নাম এবং '.cpp' এক্সটেনশন সহ 'g++' কমান্ড ব্যবহার করে ফাইলটি তৈরি করুন। এই কমান্ডটি ব্যবহার করে '.out' এক্সটেনশন সহ একটি ফাইল তৈরি করা হবে। আপনি এখন আপনার '.out' এক্সটেনশন অনুসরণ করে './' প্রবেশ করে সেই ফাইলটি চালাতে পারেন।
  পাঠ্য বিবরণ স্বয়ংক্রিয়ভাবে তৈরি

এই প্রোগ্রামে, বেস ক্লাস পয়েন্টার প্রাপ্ত ক্লাস 1 অবজেক্ট (d1) স্টোর করে। ডায়নামিক কাস্টিং বেস ক্লাস, পয়েন্টার Derived1 অবজেক্টটিকে ধরে রেখেছে এবং এটিকে derived class 1 এ বরাদ্দ করেছে, যা বৈধ গতিশীল কাস্টিং প্রদান করে।

উপসংহার :

এই নিবন্ধটি আমাদের শিখিয়েছে C++ প্রোগ্রামিং ভাষায় ব্যবহৃত টাইপ কাস্টিং পদ্ধতি। কাস্টিংয়ের ধরনটিও বিশদভাবে আলোচনা করা হয়েছিল, এবং আমরা কেন C++ প্রোগ্রামিং-এ এই জাতীয় পদ্ধতিগুলি ব্যবহার করি তার প্রয়োজনীয়তার উপর ফোকাস করেছি। আমরা সহায়তা ফাংশন নিয়ে আলোচনা করেছি যা তথ্য সংগ্রহ করে এবং সঠিক রূপান্তর যাচাই করে ভেরিয়েবলের ডেটা টাইপ রূপান্তর করতে সাহায্য করে যাকে RTTI বলা হয়। আমরা উবুন্টু 20.04 পরিবেশে C++ প্রোগ্রামিং ভাষায় একটি এক্সপ্রেশনে ডায়নামিক কাস্ট অপারেটর ব্যবহার করে ডায়নামিক কাস্টিংয়ের ধারণাটিও বাস্তবায়ন করেছি।