Event এবং Delegate এর মৌলিক ধারণা

Computer Programming - এফ শার্প প্রোগ্রামিং (F# Programming) - Event Handling এবং Delegates (ইভেন্ট হ্যান্ডলিং এবং ডেলিগেটস)
144

Event এবং Delegate এর মৌলিক ধারণা

Event এবং Delegate হল .NET প্রোগ্রামিংয়ে দুটি গুরুত্বপূর্ণ ধারণা, বিশেষত অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং (OOP) এবং ইভেন্ট-ড্রিভেন প্রোগ্রামিং বাস্তবায়নে। F# এবং C#-এ এই দুটি ধারণা ব্যবহার করে, আপনি অবজেক্টের মধ্যে পারস্পরিক যোগাযোগ এবং কার্যক্রম সম্পাদন করতে পারেন।

১. Delegate

Delegate হল একটি টাইপ-সেফ ফাংশন পয়েন্টার যা একটি বা একাধিক মেথড রেফারেন্স করার জন্য ব্যবহৃত হয়। এটি একটি বিশেষ ধরনের অবজেক্ট যা একটি নির্দিষ্ট সিগনেচার সহ মেথডকে রেফারেন্স করে এবং মেথডটিকে কল করতে পারে। এর মাধ্যমে আপনি মেথডগুলি ডাইনামিকভাবে কল করতে পারেন, এবং একাধিক মেথড একত্রে একসাথে ডিলিগেটের মাধ্যমে কল করা যায়।

Delegate এর বৈশিষ্ট্য:

  1. ফাংশন রেফারেন্স: Delegate এক বা একাধিক ফাংশনকে রেফারেন্স করতে পারে।
  2. টাইপ-সেফ: Delegate সঠিক সিগনেচার থাকা মেথডগুলিকেই রেফারেন্স করতে পারে, যা টাইপ সেফটি নিশ্চিত করে।
  3. কম্পোজেবল: Delegate এর মাধ্যমে একাধিক মেথড একসাথে ডিলিগেট করা সম্ভব।
  4. অ্যাসিনক্রোনাস কল: Delegate ব্যবহার করে আপনি অ্যাসিনক্রোনাসভাবে মেথড কল করতে পারেন।

F# এ Delegate ব্যবহার:

// একটি Delegate টাইপ ডিফাইন করা
type MyDelegate = delegate of int * int -> int

// একটি ফাংশন যা ডিলিগেট হিসেবে ব্যবহৃত হবে
let add x y = x + y

// Delegate ইনস্ট্যান্স তৈরি করা
let addDelegate = MyDelegate(add)

// ডিলিগেট কল করা
let result = addDelegate.Invoke(10, 20)
printfn "Result: %d" result   // Output: Result: 30

এখানে, MyDelegate একটি ডিলিগেট টাইপ, যা দুটি int আর্গুমেন্ট নেয় এবং একটি int রিটার্ন করে। আমরা add ফাংশনটিকে ডিলিগেট হিসেবে ব্যবহার করেছি এবং ডিলিগেটের মাধ্যমে কল করেছি।


২. Event

Event হল একটি বিশেষ ধরনের ডিলিগেট যা মূলত Publisher-Subscriber Pattern বাস্তবায়ন করতে ব্যবহৃত হয়। এটি সাধারণত অবজেক্টের মধ্যে ইন্টারঅ্যাকশন হ্যান্ডল করতে এবং একাধিক সাবস্ক্রাইবার (বা হ্যান্ডলার) যোগ করতে ব্যবহৃত হয়। যখন একটি ইভেন্ট ট্রিগার হয় (অর্থাৎ, একটি নির্দিষ্ট ঘটনা ঘটে), তখন ইভেন্ট হ্যান্ডলার গুলি কল হয় এবং ইভেন্টের সাথে সম্পর্কিত কার্যক্রম সম্পাদন করা হয়।

Event এর বৈশিষ্ট্য:

  1. Publisher-Subscriber Model: ইভেন্টের মাধ্যমে একটি অবজেক্ট (publisher) অন্য অবজেক্টগুলিকে (subscribers) অবহিত করতে পারে যে কোনো পরিবর্তন বা ঘটনা ঘটেছে।
  2. ডেলিগেট রেফারেন্স: ইভেন্ট একটি ডিলিগেটের মাধ্যমে সংজ্ঞায়িত হয় এবং এই ডিলিগেটটি ইভেন্টের জন্য হ্যান্ডলারের মেথড রেফারেন্স করে।
  3. ট্রিগার এবং সাবস্ক্রিপশন: ইভেন্ট তখন ট্রিগার হয় যখন একটি নির্দিষ্ট শর্ত পূর্ণ হয়, এবং সাবস্ক্রাইবাররা ইভেন্ট হ্যান্ডলার ফাংশন দিয়ে সেই ইভেন্টে সাবস্ক্রাইব করতে পারে।

F# এ Event ব্যবহার:

// ইভেন্টের জন্য ডিলিগেট টাইপ ডিফাইন করা
type MyEventHandler = delegate of string -> unit

// ক্লাস তৈরি করা যা ইভেন্ট প্রকাশ করবে
type Publisher() =
    // ইভেন্ট ডিফাইন করা
    let eventTriggered = Event<MyEventHandler, string>()
    
    // একটি মেথড যা ইভেন্টটি ট্রিগার করবে
    member this.TriggerEvent message =
        eventTriggered.Trigger(message)

    // ইভেন্ট সাবস্ক্রাইব করার জন্য
    member this.Subscribe(handler: MyEventHandler) =
        eventTriggered.AddHandler(handler)

// ইভেন্ট হ্যান্ডলার মেথড
let onEventTriggered message =
    printfn "Event triggered: %s" message

// Publisher অবজেক্ট তৈরি
let publisher = Publisher()

// ইভেন্টে সাবস্ক্রাইব করা
publisher.Subscribe(MyEventHandler(onEventTriggered))

// ইভেন্ট ট্রিগার করা
publisher.TriggerEvent("Hello, world!")

এখানে, Publisher ক্লাস একটি Event তৈরি করেছে, এবং TriggerEvent মেথডের মাধ্যমে ইভেন্টটি ট্রিগার করা হয়। আমরা একটি onEventTriggered মেথড তৈরি করেছি যা ইভেন্ট ট্রিগারের পরে কল হবে।


Delegate এবং Event এর মধ্যে পার্থক্য

বৈশিষ্ট্যDelegateEvent
ব্যবহারএকটি বা একাধিক মেথডকে রেফারেন্স করে, ডাইনামিকভাবে মেথড কল করাপ্রধানত publisher-subscriber প্যাটার্নে ব্যবহৃত হয়
মনিটরিংডিলিগেটের মাধ্যমে হ্যান্ডলারের মেথড সরাসরি কল করা হয়ইভেন্ট সাবস্ক্রাইবারদের মাধ্যমে কল হয়
সাবস্ক্রিপশনডিলিগেটের মাধ্যমে একাধিক মেথড যোগ করা সম্ভবইভেন্টে সাবস্ক্রাইবার যোগ করার জন্য AddHandler ব্যবহার করা হয়
হ্যান্ডলার অ্যাডডিলিগেটের মাধ্যমে হ্যান্ডলার যোগ করা হয়ইভেন্টে হ্যান্ডলার যোগ করা হয়
ব্লকিংডিলিগেট কল করলে তা অবিলম্বে কার্যকর হয়ইভেন্ট কার্যকর হওয়ার জন্য সাবস্ক্রাইবারদের অপেক্ষা করতে হয়
ট্রিগারট্রিগারিংয়ের সময় নির্ধারিত হয়ইভেন্ট ট্রিগার হয় যখন একটি নির্দিষ্ট শর্ত পূর্ণ হয়

উপসংহার

  • Delegate হল একটি টাইপ-সেফ ফাংশন পয়েন্টার যা একটি বা একাধিক মেথডের রেফারেন্স ধারণ করে এবং ডাইনামিকভাবে মেথড কল করতে ব্যবহৃত হয়।
  • Event একটি বিশেষ ধরনের ডিলিগেট যা Publisher-Subscriber Pattern অনুসরণ করে এবং যখন একটি নির্দিষ্ট ঘটনা ঘটে, তখন সেই ঘটনা সম্পর্কিত কার্যক্রম বা হ্যান্ডলারের মাধ্যমে সাবস্ক্রাইবারদের অবহিত করা হয়।

F# এবং .NET-এ Event এবং Delegate ব্যবহারের মাধ্যমে আপনি শক্তিশালী ইভেন্ট-ড্রিভেন অ্যাপ্লিকেশন তৈরি করতে পারেন যা কাস্টম কার্যক্রম এবং কনকরেন্ট প্রসেসিংয়ের জন্য খুবই উপকারী।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...