Message Passing হল অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর একটি গুরুত্বপূর্ণ ধারণা, যা মূলত অবজেক্টগুলির মধ্যে যোগাযোগের একটি প্রক্রিয়া। Objective-C তে, এটি একটি মৌলিক বৈশিষ্ট্য, যেখানে এক অবজেক্ট অন্য অবজেক্টকে মেসেজ পাঠায় এবং সেই মেসেজের ভিত্তিতে একটি মেথড কল করা হয়। এটি প্রোগ্রামিংয়ের একটি শক্তিশালী এবং নমনীয় উপায়, যা অবজেক্টের মধ্যে আন্তঃক্রিয়া সহজ করে তোলে।
Message Passing এর মৌলিক ধারণা
মেসেজ পাসিং হল একটি অবজেক্ট-ওরিয়েন্টেড ধারণা, যেখানে একটি অবজেক্ট অন্য অবজেক্টের কাছে একটি মেসেজ পাঠায়। সেই মেসেজটি সাধারণত একটি ফাংশন বা মেথড কল হিসেবে পরিচিত, যা গ্রহণকারী অবজেক্টের দ্বারা এক্সিকিউট করা হয়। মেসেজ পাসিংয়ের মাধ্যমে, অবজেক্টগুলির মধ্যে যোগাযোগ করা যায়, যেখানে মেসেজের মাধ্যমে প্রক্রিয়া বা কাজ সম্পাদন করা হয়।
অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ভাষায়, মেসেজ পাসিং হল সেই প্রক্রিয়া যা এক অবজেক্টকে অন্য অবজেক্টের কার্যক্রম বা মেথড কল করার অনুমতি দেয়। Objective-C তে এটি সাধারণত [object message] সিনট্যাক্সের মাধ্যমে করা হয়।
মেসেজ পাসিং কিভাবে কাজ করে?
- একটি অবজেক্ট অন্য অবজেক্টকে একটি মেসেজ পাঠায়।
- মেসেজটি মেথড কল হিসেবে ব্যবহৃত হয়।
- মেসেজ প্রাপ্ত অবজেক্ট, মেসেজের ভিত্তিতে একটি কার্যক্রম সম্পাদন করে।
- মেসেজ পাসিং সাধারণত run-time এ ঘটে, যার মানে হলো, একাধিক অবজেক্টের মধ্যে যোগাযোগ প্রয়োগ করা হয় যখন প্রোগ্রাম চলমান থাকে।
Objective-C তে মেসেজ পাসিং
Objective-C তে, মেসেজ পাসিং খুবই গুরুত্বপূর্ণ এবং এটি [] সিনট্যাক্স ব্যবহার করে করা হয়। একটি অবজেক্টের মেথড কল করতে, আপনি সাধারণত নিম্নলিখিত সিনট্যাক্স ব্যবহার করেন:
[object message];এখানে, object হল অবজেক্টটির নাম এবং message হল মেথড যা কল করা হবে।
অবজেক্টের মেথড কল করার উদাহরণ:
// Car.h
@interface Car : NSObject
- (void) startEngine; // মেথড ডিক্লেয়ারেশন
@end
// Car.m
@implementation Car
- (void) startEngine {
NSLog(@"Engine started.");
}
@end
// main.m
int main(int argc, const char * argv[]) {
@autoreleasepool {
Car *myCar = [[Car alloc] init]; // Car অবজেক্ট তৈরি
[myCar startEngine]; // মেসেজ পাসিং
}
return 0;
}এখানে startEngine মেথডটি Car অবজেক্টে কল করা হচ্ছে। এই মেসেজ পাসিং প্রক্রিয়ার মাধ্যমে অবজেক্টটি startEngine মেথডটি এক্সিকিউট করবে এবং আউটপুট হবে "Engine started."
Message Passing এর Run-time Execution
Objective-C তে মেসেজ পাসিং run-time এ ঘটে, যা এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য। অর্থাৎ, প্রোগ্রাম চলাকালীন সময়েই অবজেক্টটি তার মেসেজ অনুযায়ী মেথডটি এক্সিকিউট করবে।
উদাহরণ:
@interface Car : NSObject
- (void) startEngine;
- (void) stopEngine;
@end
@implementation Car
- (void) startEngine {
NSLog(@"Engine started.");
}
- (void) stopEngine {
NSLog(@"Engine stopped.");
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
Car *myCar = [[Car alloc] init]; // Car অবজেক্ট তৈরি
// মেসেজ পাসিং এবং run-time মেথড এক্সিকিউশন
SEL engineAction = @selector(startEngine); // মেথড সিলেক্টর
[myCar performSelector:engineAction]; // মেথড কল করা হচ্ছে
engineAction = @selector(stopEngine); // মেথড পরিবর্তন
[myCar performSelector:engineAction]; // নতুন মেথড কল
}
return 0;
}এখানে, performSelector: মেথডটি ব্যবহার করে run-time এ মেথড সিলেক্টরকে অ্যাসাইন করা হচ্ছে এবং সেই সিলেক্টরের ভিত্তিতে মেথডটি কল করা হচ্ছে। এতে startEngine এবং stopEngine মেথড দুটি run-time এ কল হতে পারে, যা মেসেজ পাসিংয়ের কার্যকারিতা দেখায়।
Message Sending (মেসেজ সেন্ড করা)
মেসেজ সেন্ডিং হল একটি মেসেজের মাধ্যমে অন্য অবজেক্টের মেথড কল করার প্রক্রিয়া। Objective-C তে, যখন একটি মেসেজ পাস করা হয়, তখন আসলে একটি মেথড কল করা হয় যা একটি অবজেক্টের উপর কার্যকর হয়।
[object performSelector:selector];এখানে object হল অবজেক্ট যা মেসেজটি গ্রহণ করবে, এবং selector হল সেই মেথড যা কল করা হবে। selector একটি স্পেশাল টাইপ যা মেথডের নাম নির্দেশ করে এবং এটি @selector() কিওয়ার্ডের মাধ্যমে তৈরি করা হয়।
উদাহরণ:
// Example of sending a message dynamically
SEL mySelector = @selector(startEngine);
[myCar performSelector:mySelector];এখানে, @selector(startEngine) একটি সিলেক্টর তৈরি করছে যা মেথড startEngine কে নির্দেশ করে, এবং performSelector: ব্যবহার করে তা কল করা হচ্ছে।
Message Passing এর সুবিধা
- ডাইনামিক এবং নমনীয়: Objective-C তে, মেসেজ পাসিংকে run-time এ পরিচালনা করা যায়, যা কোডকে নমনীয় এবং পরিবর্তনযোগ্য করে তোলে।
- অবজেক্টের মধ্যে ইন্টারঅ্যাকশন: একাধিক অবজেক্টের মধ্যে যোগাযোগ এবং কার্যক্রম ভাগ করার জন্য এটি অত্যন্ত কার্যকর।
- প্রোগ্রামের গঠন: মেসেজ পাসিং কোডের গঠন পরিষ্কার এবং সহজ করে, কারণ মেথড কল সরাসরি মেসেজের মাধ্যমে সম্পাদিত হয়।
সারাংশ
- Message Passing হল Objective-C তে এক অবজেক্ট অন্য অবজেক্টকে মেসেজ পাঠানোর মাধ্যমে মেথড কল করার প্রক্রিয়া।
- Objective-C তে, মেসেজ পাসিং
[]সিনট্যাক্স ব্যবহার করে করা হয়, যেমন:[object message]। - মেসেজ পাসিং run-time এ ঘটে, যা এটিকে আরও নমনীয় এবং পরিবর্তনযোগ্য করে তোলে।
- Message Sending হল মেসেজ পাসিংয়ের অংশ, যা একটি নির্দিষ্ট সিলেক্টরের মাধ্যমে মেথড কল করে।
- performSelector মেথডের মাধ্যমে ডাইনামিকভাবে মেথড কল করা সম্ভব হয়।
এই প্রক্রিয়া কোডকে আরও মডুলার, নমনীয় এবং শক্তিশালী করে তোলে।
Read more