কিভাবে জাভাতে ডাইনামিক বাইন্ডিং ব্যবহার করবেন?

Kibhabe Jabhate Da Inamika Ba Indim Byabahara Karabena



দ্য ' গতিশীল বাঁধাই ” পলিমরফিক আচরণের অনুমতি দেয়, যেখানে রেফারেন্স টাইপের পরিবর্তে বস্তুর প্রকৃত প্রকারের উপর ভিত্তি করে রানটাইমে একটি বস্তুর পদ্ধতির আমন্ত্রণ নির্ধারিত হয়। এটি সাবক্লাসগুলিকে ওভাররাইড করার অনুমতি দিয়ে এবং প্যারেন্ট ক্লাসে সংজ্ঞায়িত পদ্ধতিগুলির বাস্তবায়ন প্রদান করার মাধ্যমে কোড পুনঃব্যবহারযোগ্যতা প্রচার করে।

এই ব্লগটি জাভাতে ডাইনামিক বাইন্ডিং এর ব্যবহার এবং বাস্তবায়ন প্রদর্শন করে।

জাভাতে ডাইনামিক বাইন্ডিং কিভাবে ব্যবহার করবেন?

ডাইনামিক বাইন্ডিং বস্তুর মধ্যে লুজ কাপলিং সক্ষম করে। এটি বিদ্যমান কোড পরিবর্তন না করেই নতুন সাবক্লাস যোগ করে কার্যকারিতার সহজ প্রসারণে সহায়তা করে। রানটাইম প্রেরণ, ইভেন্ট হ্যান্ডলিং বা প্লাগইন সিস্টেমের জন্য ডাইনামিক বাইন্ডিং ব্যাপকভাবে ব্যবহৃত হয়।







বিস্তারিত ব্যাখ্যার জন্য কয়েকটি উদাহরণ দেওয়া যাক:



উদাহরণ 1: ডায়নামিক বাইন্ডিং বাস্তবায়ন করা



ডায়নামিক বাইন্ডিং ব্যবহার করে, প্রোগ্রামাররা ব্যবহারকারীদের কাস্টমাইজযোগ্য অ্যাপ্লিকেশন তৈরি করতে ডিফল্ট আচরণগুলি কাস্টমাইজ এবং ওভাররাইড করার অনুমতি দিতে পারে। ব্যবহারিক বাস্তবায়নের জন্য, আসুন একটি উদাহরণ দিয়ে হেঁটে যাই:





java.util.Arrays আমদানি করুন;
java.util.HashSet আমদানি করুন;
java.util.List আমদানি করুন;
java.util.Set আমদানি করুন;

পাবলিক ক্লাস DynBind {
পাবলিক স্ট্যাটিক অকার্যকর প্রধান ( স্ট্রিং [ ] args ) {
গেমিং গেম টাইপ 1 = নতুন ক্রিকেট ( ) ;
গেমিং গেম টাইপ 2 = নতুন কলফডিউটি ( ) ;
gameType1.gameType ( ) ;
gameType2.gameType ( ) ;
}
}
ক্লাস গেমিং {
সর্বজনীন অকার্যকর গেম টাইপ ( ) {
System.out.println ( 'শারীরিক বা ভার্চুয়াল গেমস' ) ;
}
}
ক্লাস ক্রিকেট গেমিংকে প্রসারিত করে {
@ অগ্রাহ্য করা
সর্বজনীন অকার্যকর গেম টাইপ ( ) {
System.out.println ( 'ক্রিকেট একটি শারীরিক খেলা' ) ;
}
}
ক্লাস CallofDuty গেমিং প্রসারিত {
@ অগ্রাহ্য করা
সর্বজনীন অকার্যকর গেম টাইপ ( ) {
System.out.println ( 'কলফডিউটি ​​একটি ভার্চুয়াল গেম' ) ;
}
}

উপরের কোডের ব্যাখ্যা:



  • প্রথম, ক্লাস ' DynBind ' তৈরি করা হয়, এবং টাইপের দুটি বস্তু ' গেমিং ” ঘোষণা করা হয়।
  • এর পরে, এই অবজেক্টগুলি নতুন ' দিয়ে আরম্ভ করা হয় ক্রিকেট ' এবং ' কলফডিউটি ” অবজেক্ট, এই প্রারম্ভিকতা গতিশীল বাঁধাই প্রদর্শন করে। রেফারেন্স টাইপ হল ' গেমিং কিন্তু প্রকৃত বস্তুর প্রকারগুলি হল ' ক্রিকেট ' এবং ' কলফডিউটি ”, যথাক্রমে।
  • এখন, এই বস্তুগুলি 'আহ্বান করার জন্য ব্যবহার করা হয় খেলার ধরণ() ” শিশু ক্লাসে ফাংশন ওভাররাইড করে ফাংশন।
  • তারপর, পিতামাতা ' গেমিং ' ক্লাস ঘোষণা করা হয় যা তৈরি করে এবং শুরু করে ' খেলার ধরণ() ” ফাংশন, যা একটি ডামি পাঠ্য বার্তা প্রিন্ট করে।
  • এরপরে, 'নাম দিয়ে দুটি শিশু ক্লাস তৈরি করা হয় ক্রিকেট ' এবং ' কলফডিউটি ” এই ক্লাসগুলি পিতামাতার কাছ থেকে উত্তরাধিকারসূত্রে প্রাপ্ত হয় ' গেমিং 'শ্রেণী।
  • এর পরে, ' @অগ্রাহ্য করা 'টীকা অভিভাবককে ওভাররাইড করতে ব্যবহার করা হয়' গেমিং 'বর্গ পদ্ধতি নামকরণ করা হয়েছে' খেলার ধরণ()
  • শেষ পর্যন্ত, একটি ভিন্ন ডামি বার্তা উভয় চাইল্ড ক্লাস ওভাররাইডেড পদ্ধতিতে প্রদর্শিত হয়।

মৃত্যুদন্ডের পর্ব শেষ হওয়ার পরে:

আউটপুট দেখায় যে চাইল্ড ক্লাসের ডামি বার্তাগুলি ডায়নামিক বাইন্ডিং ব্যবহার করে কনসোলে প্রদর্শিত হয়।

উদাহরণ 2: বহুস্তরীয় উত্তরাধিকার বাস্তবায়ন

বহুস্তরীয় উত্তরাধিকার সৃষ্টির জন্যও ডাইনামিক বাইন্ডিং প্রয়োগ করা যেতে পারে। নীচে দেখানো একই প্রোগ্রামের দুটি কোড ব্লক:

ক্লাস গেমিং {
সর্বজনীন অকার্যকর গেম টাইপ ( ) {
System.out.println ( 'শারীরিক বা ভার্চুয়াল গেমস' ) ;
}
}
ক্লাস ক্রিকেট গেমিংকে প্রসারিত করে {
@ অগ্রাহ্য করা
সর্বজনীন অকার্যকর গেম টাইপ ( ) {
System.out.println ( 'ক্রিকেট একটি শারীরিক খেলা' ) ;
}
সর্বজনীন শূন্য খেলার বিন্যাস ( ) {
System.out.println ( 'ক্রিকেট খেলার বিভিন্ন ফর্ম্যাট আছে' ) ;
}
}
ক্লাস CallofDuty গেমিং প্রসারিত {
@ অগ্রাহ্য করা
সর্বজনীন অকার্যকর গেম টাইপ ( ) {
System.out.println ( 'কলফডিউটি ​​একটি ভার্চুয়াল গেম' ) ;
}
সর্বজনীন অকার্যকর গেমমোড ( ) {
System.out.println ( 'CallofDuty এর একাধিক গেম মোড আছে' ) ;
}
}
ক্লাস ক্রিকেট গেম ক্রিকেটকে প্রসারিত করে {
সর্বজনীন অকার্যকর গেমমোড ( ) {
System.out.println ( 'ক্রিকেটের একক গেম মোড আছে' ) ;
}
}
ক্লাস CallofDutyGame CallofDuty প্রসারিত করে {
}

উপরের কোডের ব্যাখ্যা:

  • প্রথমত, পিতামাতা ' গেমিং ' ক্লাস তৈরি করা হয়েছে এবং এতে ' খেলার ধরণ() ” ফাংশন যা একটি ডামি বার্তা ধারণ করে।
  • এরপরে, দুটি শিশু ক্লাস নাম “ ক্রিকেট ' এবং ' কলফডিউটি ' তৈরি করা হয়েছে, উভয়ই 'নামের প্যারেন্ট ক্লাস ফাংশনকে ওভাররাইড করে' খেলার ধরণ()
  • এই ক্লাসগুলিতে একটি অতিরিক্ত ফাংশন রয়েছে যার নাম ' খেলার বিন্যাস() ' এবং ' গেমমোড() ” ফাংশন, যথাক্রমে।
  • তারপরে, 'নামক একটি মাল্টি-লেভেল চাইল্ড তৈরি করুন' ক্রিকেট খেলা 'যা শিশু দ্বারা প্রসারিত হয়' ক্রিকেট 'শ্রেণী। এতে রয়েছে ' গেমমোড() 'ফাংশন যা তার পিতামাতার দ্বারা ওভাররাইড করা হয়' ক্রিকেট 'শ্রেণী।
  • এর পরে, ' কলফডিউটি ​​গেম ' ক্লাস একটি শিশু হিসাবে তৈরি করা হয় ' কলফডিউটি 'শ্রেণী। এটি একটি বহুস্তরীয় উত্তরাধিকার তৈরি করে এবং গতিশীল বাঁধাইয়ের কার্যকারিতা সক্ষম করে।

এখন, সন্নিবেশ করান ' প্রধান() 'পদ্ধতি:

পাবলিক ক্লাস DynBind {
পাবলিক স্ট্যাটিক অকার্যকর প্রধান ( স্ট্রিং [ ] args ) {
কলফডিউটি ​​গেম codg = নতুন CallofDutyGame ( ) ;
codg.gameType ( ) ;
codg.gameMode ( ) ;

ক্রিকেট খেলা cricg = নতুন ক্রিকেট খেলা ( ) ;
cricg.gameType ( ) ;
cricg.playingFormat ( ) ;
cricg.gameMode ( ) ;
}
}

উপরের কোডের ব্যাখ্যা:

  • প্রথমত, একটি বস্তু ' কলফডিউটি ​​গেম ” ক্লাস তৈরি করা হয়েছে যা এর প্যারেন্ট ক্লাসের ফাংশনকে কল করে।
  • একই পদ্ধতিতে, ' ক্রিকেট খেলা ” অবজেক্ট ঘোষণা করা হয় যা এর প্যারেন্ট ক্লাস ফাংশনকে কল করে যা হায়ারার্কিতে মাল্টিলেভেলে উপলব্ধ।

মৃত্যুদন্ডের পর্ব শেষ হওয়ার পরে:

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

উপসংহার

জাভাতে, ' গতিশীল বাঁধাই ” পলিমারফিজম, কোড পুনঃব্যবহারযোগ্যতা, নমনীয়তা এবং এক্সটেনসিবিলিটির মত সুবিধা প্রদান করে। এটি উত্তরাধিকার, পদ্ধতি ওভাররাইডিং এবং আপকাস্টিংয়ের নিয়ম অনুসরণ করে প্রয়োগ করা হয়। ডাইনামিক বাইন্ডিং রানটাইম ফাংশন সক্ষম করে এবং OOPs ধারণাতে নমনীয় এবং বহুরূপী আচরণ বাড়ায়। এটি জাভাতে ডাইনামিক বাইন্ডিংয়ের ব্যবহার এবং বাস্তবায়ন সম্পর্কে।