অবজেক্টিভ-সি (Objective-C) তে মেথড হলো এমন একটি ফাংশন যা একটি ক্লাস বা অবজেক্টের সাথে সম্পর্কিত। মেথড ডিক্লেয়ারেশন এবং ডেফিনিশন দুটি গুরুত্বপূর্ণ পদক্ষেপ যা মেথড তৈরির সময় প্রয়োজন হয়। এই দুটি পদক্ষেপের মধ্যে পার্থক্য রয়েছে এবং প্রতিটি পদক্ষেপের নিজস্ব ভূমিকা আছে। নিচে মেথড ডিক্লেয়ারেশন এবং মেথড ডেফিনিশন এর বিস্তারিত আলোচনা করা হলো।
১. মেথড ডিক্লেয়ারেশন (Method Declaration)
মেথড ডিক্লেয়ারেশন হল মেথডের একটি সংক্ষিপ্ত বিবরণ যা @interface ব্লকের মধ্যে থাকে। এখানে মেথডটির নাম, প্যারামিটার (যদি থাকে), এবং রিটার্ন টাইপ উল্লেখ করা হয়, কিন্তু মেথডের বডি বা বাস্তবায়ন (definition) এখানে দেওয়া হয় না।
মেথড ডিক্লেয়ারেশনটি সাধারণত হেডার ফাইল (.h) এ থাকে এবং ক্লাসের অন্য অংশগুলির জন্য মেথডের উপলব্ধতা জানায়।
উদাহরণ:
// Car.h - মেথড ডিক্লেয়ারেশন
@interface Car : NSObject
@property NSString *model;
@property int year;
- (void) displayCarDetails; // মেথড ডিক্লেয়ারেশন
- (NSString *) carBrand; // একটি মেথড যার রিটার্ন টাইপ NSString
@end- মেথড ডিক্লেয়ারেশন: এখানে
- (void) displayCarDetails;মেথডটি ডিক্লেয়ার করা হয়েছে, যার রিটার্ন টাইপvoid(কোনো রিটার্ন ভ্যালু নেই) এবং এটি কোনো প্যারামিটার নেবে না। - রিটার্ন টাইপ: মেথডের রিটার্ন টাইপ হিসেবে
void(যেমন উপরের উদাহরণে) বা কোনো ডেটা টাইপ (যেমনNSString *) থাকতে পারে।
২. মেথড ডেফিনিশন (Method Definition)
মেথড ডেফিনিশন হলো মেথডের কার্যকরী অংশ, যেখানে মেথডটি কী কাজ করবে তার বিস্তারিত কোড লেখা হয়। এটি @implementation ব্লকের মধ্যে থাকে এবং সাধারণত .m ফাইল (এমপ্লিমেন্টেশন ফাইল) এ থাকে।
মেথড ডেফিনিশনে আমরা মেথডের বডি তৈরি করি, যেখানে ক্লাসের প্রপার্টি বা প্যারামিটার ব্যবহারের মাধ্যমে মেথডটির কার্যক্রম পরিচালিত হয়।
উদাহরণ:
// Car.m - মেথড ডেফিনিশন
@implementation Car
- (void) displayCarDetails {
NSLog(@"Car Model: %@, Year: %d", self.model, self.year);
}
- (NSString *) carBrand {
return @"Tesla";
}
@end- মেথড ডেফিনিশন:
- (void) displayCarDetails { ... }- এখানেdisplayCarDetailsমেথডের বডি ইমপ্লিমেন্ট করা হয়েছে।self.modelএবংself.yearএর মান আউটপুট দেওয়া হচ্ছে। - আরেকটি মেথড ডেফিনিশন:
- (NSString *) carBrand { ... }- এটিcarBrandমেথড, যা একটি স্ট্রিং (NSString) রিটার্ন করে, এখানে"Tesla"স্ট্রিংটি রিটার্ন করা হচ্ছে।
ডিক্লেয়ারেশন এবং ডেফিনিশনের মধ্যে পার্থক্য
| বৈশিষ্ট্য | মেথড ডিক্লেয়ারেশন | মেথড ডেফিনিশন |
|---|---|---|
| কোথায় থাকে | @interface ব্লক (হেডার ফাইল - .h) | @implementation ব্লক (এমপ্লিমেন্টেশন ফাইল - .m) |
| কী লেখা হয় | মেথড নাম, প্যারামিটার, রিটার্ন টাইপ | মেথডের কার্যকরী অংশ বা বডি (কোড) |
| লক্ষ্য | মেথডের উপলব্ধতা বা ঘোষণা | মেথডের বাস্তবায়ন বা কার্যকারিতা |
| প্রয়োজনীয়তা | ক্লাসের অন্যান্য অংশের জন্য মেথড উপলব্ধ করার জন্য | মেথডটির কার্যকরী কোড বা লজিক তৈরি করার জন্য |
| উদাহরণ | - (void) displayCarDetails; | - (void) displayCarDetails { ... } |
সারাংশ
- মেথড ডিক্লেয়ারেশন: এটি মেথডের সংক্ষিপ্ত বিবরণ, যেখানে মেথডটির নাম, প্যারামিটার এবং রিটার্ন টাইপ উল্লেখ করা হয়। এটি হেডার ফাইলে থাকে এবং মেথডটি ক্লাস বা অবজেক্টের জন্য উপলব্ধ করানোর উদ্দেশ্যে ব্যবহৃত হয়।
- মেথড ডেফিনিশন: এটি মেথডের বাস্তবায়ন বা কার্যকরী অংশ, যেখানে মেথডটি কীভাবে কাজ করবে তার লজিক দেওয়া হয়। এটি এমপ্লিমেন্টেশন ফাইলে থাকে এবং এখানে কোডটি কার্যকরীভাবে সম্পাদিত হয়।
এগুলো একত্রে কাজ করে একটি পূর্ণাঙ্গ অবজেক্ট-ওরিয়েন্টেড প্রোগ্রাম তৈরি করতে, যেখানে ডিক্লেয়ারেশন ক্লাসের অন্যান্য অংশগুলোর জন্য মেথডের উপলব্ধতা ঘোষণা করে এবং ডেফিনিশন সেই মেথডটির কার্যকলাপ বাস্তবায়ন করে।
Read more