Delegates এর ধারণা এবং ব্যবহার
Delegates হল একটি বিশেষ ধরনের প্রকার (type) যা একটি মেথডের রেফারেন্স (reference) সংরক্ষণ করতে পারে। এটি একটি type-safe function pointer হিসেবে কাজ করে, যা কোনও মেথড বা ফাংশনের রেফারেন্স ধরে রাখে এবং পরবর্তীতে সেই মেথড বা ফাংশনকে কল করতে সক্ষম হয়। VB.Net-এ, ডেলিগেট ব্যবহার করা হয় এক বা একাধিক মেথডকে কল করার জন্য, এবং এটি Event-driven programming বা callback mechanism-এ ব্যবহৃত হয়।
১. Delegate এর ধারণা
Delegate একটি টাইপ সেফ অবজেক্ট যা একটি মেথডের রেফারেন্স ধারণ করতে পারে। এটি মেথডের নাম এবং সিগনেচার (parameter types, return type) অনুযায়ী কাজ করে। ডেলিগেট ব্যবহার করে আপনি মেথড কলের প্রক্রিয়াটি হ্যান্ডেল করতে পারেন এবং এর মাধ্যমে আপনি একটি মেথডের রেফারেন্স অন্য কোনো মেথডে পাস করতে পারেন।
ডেলিগেটের সবচেয়ে বড় সুবিধা হল, এটি একাধিক মেথডকে একত্রে কল করতে সহায়তা করে, যা মডুলার এবং পরিষ্কার কোড লেখার জন্য খুবই কার্যকরী।
Delegate এর সাধারণ সিনট্যাক্স:
Delegate ReturnType DelegateName(ParamType1, ParamType2, ...)- ReturnType: মেথডের রিটার্ন টাইপ।
- DelegateName: ডেলিগেটের নাম।
- ParamType1, ParamType2, ...: মেথডের প্যারামিটার টাইপ।
২. Delegate তৈরি এবং ব্যবহার করা
২.১. ডেলিগেট ডিফাইন করা এবং ব্যবহার করা
প্রথমে, একটি ডেলিগেট ডিফাইন করা হয় যা একটি নির্দিষ্ট সিগনেচারের মেথডকে রেফারেন্স করে। তারপর, সেই ডেলিগেটের মাধ্যমে মেথড কল করা হয়।
উদাহরণ: Delegate ডিফাইন করা এবং ব্যবহার করা
' ডেলিগেট ডিফাইন করা
Delegate Sub PrintMessage(message As String)
' মেথড যা ডেলিগেটের মাধ্যমে কল হবে
Sub ShowMessage(msg As String)
Console.WriteLine(msg)
End Sub
Sub Main()
' ডেলিগেট অবজেক্ট তৈরি করা
Dim printer As PrintMessage = AddressOf ShowMessage
' ডেলিগেটের মাধ্যমে মেথড কল করা
printer("Hello from Delegate!")
End Subব্যাখ্যা:
PrintMessageএকটি ডেলিগেট যা একটিStringপ্যারামিটার নেয় এবংSubরিটার্ন টাইপ ধারণ করে।ShowMessageমেথডটিPrintMessageডেলিগেট দ্বারা কল করা হচ্ছে। এখানেAddressOfকিওয়ার্ড ব্যবহার করা হয়েছে যাShowMessageমেথডের রেফারেন্স ডেলিগেটের সাথে যুক্ত করে।
৩. Multicast Delegates (একাধিক মেথড কল করা)
ডেলিগেট একাধিক মেথডকে একত্রে কল করার জন্য ব্যবহৃত হতে পারে। একাধিক মেথডকে ডেলিগেটের মাধ্যমে কল করার প্রক্রিয়াকে Multicast Delegates বলা হয়। এটি একটি ডেলিগেটের মাধ্যমে একাধিক মেথডকে একসাথে কল করতে সহায়তা করে।
Multicast Delegate উদাহরণ:
' ডেলিগেট ডিফাইন করা
Delegate Sub PrintMessage(message As String)
' প্রথম মেথড
Sub ShowMessage1(msg As String)
Console.WriteLine("Message 1: " & msg)
End Sub
' দ্বিতীয় মেথড
Sub ShowMessage2(msg As String)
Console.WriteLine("Message 2: " & msg)
End Sub
Sub Main()
' ডেলিগেট অবজেক্ট তৈরি করা
Dim printer As PrintMessage = AddressOf ShowMessage1
printer = AddressOf ShowMessage2 ' Add second method to delegate
' Multicast delegate: একাধিক মেথড কল করা
printer("Hello from Multicast Delegate!")
End Subব্যাখ্যা:
printerডেলিগেট দুটি মেথডShowMessage1এবংShowMessage2কল করতে সক্ষম।- আপনি
AddressOfকিওয়ার্ড দিয়ে প্রথমেShowMessage1এবং পরেShowMessage2মেথড যোগ করেছেন। - একাধিক মেথড কল করতে ডেলিগেট ব্যবহার করা হয়েছে।
৪. Event Handling (ইভেন্ট হ্যান্ডলিং) এবং Delegate
ডেলিগেট সাধারণত ইভেন্ট হ্যান্ডলিংয়ে ব্যবহৃত হয়। যখন একটি ইভেন্ট ঘটে, তখন তার সাথে সংযুক্ত ডেলিগেট কল করা হয়।
ইভেন্ট হ্যান্ডলিং উদাহরণ:
' ডেলিগেট ডিফাইন করা
Delegate Sub MessageHandler(message As String)
' ইভেন্ট ডিফাইন করা
Event NewMessage As MessageHandler
' মেথড যা ইভেন্টে সংযুক্ত হবে
Sub ShowMessage(msg As String)
Console.WriteLine(msg)
End Sub
Sub Main()
' NewMessage ইভেন্টে মেথড যোগ করা
AddHandler NewMessage, AddressOf ShowMessage
' ইভেন্ট টিগার করা
NewMessage("Hello from Event Delegate!")
End Subব্যাখ্যা:
MessageHandlerডেলিগেট ইভেন্টNewMessageএর মাধ্যমেShowMessageমেথডকে কল করার জন্য ব্যবহৃত হচ্ছে।AddHandlerকিওয়ার্ড ব্যবহার করেNewMessageইভেন্টেShowMessageমেথড যোগ করা হয়েছে।NewMessageইভেন্ট কল করার মাধ্যমেShowMessageমেথড কার্যকর হচ্ছে।
৫. Delegate এর সুবিধা
- Type-safe: ডেলিগেট শুধুমাত্র একটি নির্দিষ্ট সিগনেচারের মেথড কল করতে পারে, এটি টাইপ সেফ (type-safe)।
- Flexibility: একাধিক মেথড কল করার সুবিধা দেয় (Multicast Delegates)।
- Event Handling: ইভেন্ট ড্রিভেন প্রোগ্রামিংয়ে ডেলিগেট ব্যবহৃত হয়, যা ইভেন্টগুলির সাথে সংযুক্ত মেথডগুলিকে কল করতে সক্ষম করে।
- Decoupling: ডেলিগেট কোডের বিভিন্ন অংশের মধ্যে সম্পর্ক স্থাপন করে, যার ফলে কোডের মধ্যে লুজ কপ্লিং (loose coupling) সৃষ্টি হয়।
সারাংশ
- Delegate হল একটি টাইপ সেফ ফাংশন পয়েন্টার যা একটি বা একাধিক মেথডের রেফারেন্স ধারণ করতে পারে।
- Multicast Delegate এর মাধ্যমে একাধিক মেথডকে একসাথে কল করা যায়।
- ডেলিগেট Event Handling-এ ব্যবহৃত হয় যেখানে ইভেন্টের সাথে সংযুক্ত মেথডগুলি কল করা হয়।
- ডেলিগেট প্রোগ্রামিংয়ের শক্তিশালী এবং নমনীয় উপাদান হিসেবে ব্যবহৃত হয়, বিশেষ করে ইভেন্ট-ড্রিভেন প্রোগ্রামিং ও কলব্যাক ফাংশনে।
এভাবে, ডেলিগেট ব্যবহার করে প্রোগ্রামগুলোর কার্যকারিতা বাড়ানো এবং কোডের পুনঃব্যবহারযোগ্যতা নিশ্চিত করা যায়।
Read more