কম্পিউটার

জাভাতে C++ বনাম জেনেরিকের টেমপ্লেট


টেমপ্লেটগুলি হল জেনেরিক প্রোগ্রামিং এর ভিত্তি, যার মধ্যে এমনভাবে কোড লেখার অন্তর্ভুক্ত যা কোনো নির্দিষ্ট ধরনের থেকে স্বাধীন।

একটি টেমপ্লেট একটি জেনেরিক ক্লাস বা একটি ফাংশন তৈরি করার জন্য একটি ব্লুপ্রিন্ট বা সূত্র। লাইব্রেরি কন্টেনার যেমন পুনরাবৃত্তিকারী এবং অ্যালগরিদমগুলি জেনেরিক প্রোগ্রামিংয়ের উদাহরণ এবং টেমপ্লেট ধারণা ব্যবহার করে তৈরি করা হয়েছে।

প্রতিটি পাত্রের একটি একক সংজ্ঞা আছে, যেমন ভেক্টর, কিন্তু আমরা বিভিন্ন ধরণের ভেক্টরকে সংজ্ঞায়িত করতে পারি যেমন, ভেক্টর বা ভেক্টর

উদাহরণ কোড

#include <iostream>
#include <string>
using namespace std;
template <typename T>
inline T const& Max (T const& a, T const& b) {
   return a < b ? b:a;
}
int main () {
   int i = 39;
   int j = 20;
   cout << "Max(i, j): " << Max(i, j) << endl;
   double f1 = 13.5;
   double f2 = 20.7;
   cout << "Max(f1, f2): " << Max(f1, f2) << endl;
   string s1 = "Hello";
   string s2 = "World";
   cout << "Max(s1, s2): " << Max(s1, s2) << endl;
   return 0;
}

আউটপুট

Max(i, j): 39
Max(f1, f2): 20.7
Max(s1, s2): World

অন্যদিকে, জেনেরিক হিসেবে জাভা।

জাভা জেনেরিক পদ্ধতি এবং জেনেরিক ক্লাস প্রোগ্রামারদের যথাক্রমে একটি একক পদ্ধতি ঘোষণা, সম্পর্কিত পদ্ধতির একটি সেট, অথবা একটি একক শ্রেণি ঘোষণার সাথে, সম্পর্কিত প্রকারের একটি সেট নির্দিষ্ট করতে সক্ষম করে।

জেনেরিক এছাড়াও কম্পাইল-টাইম টাইপ নিরাপত্তা প্রদান করে যা প্রোগ্রামারদের কম্পাইলের সময় অবৈধ ধরন ধরতে দেয়।

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

জেনারিক পদ্ধতি

আপনি একটি একক জেনেরিক পদ্ধতির ঘোষণা লিখতে পারেন যা বিভিন্ন ধরণের আর্গুমেন্টের সাথে বলা যেতে পারে। জেনেরিক পদ্ধতিতে পাস করা আর্গুমেন্টের প্রকারের উপর ভিত্তি করে, কম্পাইলার প্রতিটি পদ্ধতি কল যথাযথভাবে পরিচালনা করে। জেনেরিক পদ্ধতি −

সংজ্ঞায়িত করার নিয়মগুলি নিম্নরূপ
  • সমস্ত জেনেরিক পদ্ধতির ঘোষণার একটি টাইপ প্যারামিটার বিভাগ থাকে কোণ বন্ধনী (<এবং>) দ্বারা সীমাবদ্ধ যা পদ্ধতির রিটার্ন টাইপের পূর্বে থাকে ( পরবর্তী উদাহরণে )।

  • প্রতিটি টাইপ প্যারামিটার বিভাগে কমা দ্বারা পৃথক করা এক বা একাধিক টাইপ প্যারামিটার থাকে। একটি টাইপ প্যারামিটার, একটি টাইপ ভেরিয়েবল নামেও পরিচিত, একটি শনাক্তকারী যা একটি জেনেরিক টাইপ নাম নির্দিষ্ট করে৷

  • টাইপ প্যারামিটারগুলি রিটার্ন টাইপ ঘোষণা করতে এবং জেনেরিক পদ্ধতিতে পাস করা আর্গুমেন্টের ধরনগুলির জন্য স্থানধারক হিসাবে কাজ করতে ব্যবহার করা যেতে পারে, যেগুলি প্রকৃত টাইপ আর্গুমেন্ট হিসাবে পরিচিত৷

  • একটি জেনেরিক পদ্ধতির শরীর অন্য যেকোনো পদ্ধতির মতোই ঘোষণা করা হয়। মনে রাখবেন যে টাইপ প্যারামিটার শুধুমাত্র রেফারেন্স প্রকারগুলিকে উপস্থাপন করতে পারে, আদিম প্রকারগুলি নয় (যেমন int, ডবল এবং char)।

উদাহরণ কোড

public class GenericMethodTest {
   // generic method printArray
   public static < E > void printArray( E[] inputArray ) {
      // Display array elements
      for(E element : inputArray) {
         System.out.printf("%s ", element);
      }
      System.out.println();
   }
   public static void main(String args[]) {
      // Create arrays of Integer, Double and Character
      Integer[] intArray = { 1, 2, 3, 4, 5 };
      Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 };
      Character[] charArray = { 'H', 'E', 'L', 'L', 'O' };
      System.out.println("Array integerArray contains:");
      printArray(intArray); // pass an Integer array
      System.out.println("\nArray doubleArray contains:");
      printArray(doubleArray); // pass a Double array
      System.out.println("\nArray characterArray contains:");
      printArray(charArray); // pass a Character array
   }
}

আউটপুট

Array integerArray contains:
1 2 3 4 5
Array doubleArray contains:
1.1 2.2 3.3 4.4
Array characterArray contains:
H E L L O

এখন আসুন আমরা টেমপ্লেট এবং জেনেরিকের মধ্যে পার্থক্য দেখি। পার্থক্যগুলো নিচের মত -

  • এটি টাইপ-ইরেজার ব্যবহার করে; এটি কম্পাইলের সময় কঠোর টাইপ চেক নিশ্চিত করে। জাভাতে জেনেরিক কম্পাইল সময় নিরাপত্তা প্রদান করে এবং টাইপকাস্টিং এর প্রয়োজনীয়তা দূর করে। এই ধরনের ইরেজার নিশ্চিত করতে এটি সরাসরি জাভা কম্পাইলার ফ্রন্ট এন্ডে উপস্থিত থাকে।

  • C++ এ, টেমপ্লেটগুলি ব্যবহার করা হলে কম্পাইলার প্রদত্ত টাইপের সাথে জেনেরিক প্যারামিটার প্রতিস্থাপন করার পরে আবার টেমপ্লেট কোড নির্গত করে।

  • জাভাতে এমনকি যদি আমাদের ডেটাটাইপ নির্দিষ্ট করতে হয়, যার মধ্যে কোনও বস্তু ব্যবহার করে ফাংশন কল করে, আমাদের প্রয়োজনীয় কাজ করার জন্য র্যাপার ক্লাসের পরিবর্তে প্রকৃত ডেটাটাইপগুলির সাথে C++ এর মতো টাইপকাস্ট করতে হবে না।

  • জাভা জেনেরিক্স প্রারম্ভিক সময়ে টাইপ চেকিং ব্যবহার করে, এবং নন-জেনারিক কোডের সমতুল্য বাইট-কোড তৈরি করে C++-এ "পরবর্তী টাইপিং" এবং টেমপ্লেট মেটা-প্রোগ্রামিং রয়েছে এবং প্রতিটি ইনস্ট্যান্টেশনের জন্য নতুন ক্লাস তৈরি করে।


  1. C# এ ফাঙ্ক জেনেরিক টাইপ

  2. C# এ জেনেরিক

  3. C# জেনেরিক বনাম C++ টেমপ্লেট

  4. জাভাতে ইরেজার টাইপ করুন