Objective-C তে Optional এবং Required মেথড দুটি গুরুত্বপূর্ণ ধারণা, যা প্রোটোকল (protocol) এর সাথে সম্পর্কিত। প্রোটোকল একটি চুক্তি, যা ক্লাসকে কিছু নির্দিষ্ট মেথড বা প্রপার্টি ইমপ্লিমেন্ট করতে বলে। এখানে Optional এবং Required মেথডের মধ্যে পার্থক্য কী তা বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে।
১. Required Methods
Required methods হল এমন মেথড যেগুলি একটি প্রোটোকল অনুসরণকারী ক্লাসকে অবশ্যই ইমপ্লিমেন্ট করতে হবে। যদি একটি ক্লাস একটি প্রোটোকল কনফর্ম করে, তবে সেই ক্লাসকে প্রোটোকলে ডিফাইন করা Required methods গুলি অবশ্যই ইমপ্লিমেন্ট করতে হবে। Required methods ক্লাসের জন্য বাধ্যতামূলক এবং এটি ক্লাসের কাজের জন্য অপরিহার্য।
উদাহরণ:
#import <Foundation/Foundation.h>
@protocol AnimalDelegate <NSObject>
@required // Required মেথড
- (void) makeSound;
@end
@interface Dog : NSObject <AnimalDelegate>
@end
@implementation Dog
- (void) makeSound {
NSLog(@"Bark");
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
Dog *myDog = [[Dog alloc] init];
[myDog makeSound]; // Required মেথডটি ইমপ্লিমেন্ট করা হয়েছে
}
return 0;
}বিশেষ দৃষ্টি:
@required: এটি প্রোটোকলে ডিফাইন করা মেথডকে বাধ্যতামূলক করে তোলে।- ক্লাস
DogএmakeSoundমেথডটি প্রোটোকল অনুসরণ করার জন্য ইমপ্লিমেন্ট করতে হয়েছে।
২. Optional Methods
Optional methods হল এমন মেথড যেগুলি একটি প্রোটোকল অনুসরণকারী ক্লাসকে ইচ্ছামত ইমপ্লিমেন্ট করতে হয়। এটি শুধুমাত্র একটি বিকল্প, এবং ক্লাসের জন্য এগুলি ইমপ্লিমেন্ট করা বাধ্যতামূলক নয়। যদি একটি ক্লাস একটি প্রোটোকলের Optional মেথড ইমপ্লিমেন্ট না করে, তবে তাও কোনও সমস্যা নেই এবং এটি সঠিকভাবে কাজ করবে।
উদাহরণ:
#import <Foundation/Foundation.h>
@protocol AnimalDelegate <NSObject>
@optional // Optional মেথড
- (void) sleep;
@end
@interface Cat : NSObject <AnimalDelegate>
@end
@implementation Cat
- (void) sleep {
NSLog(@"The cat is sleeping");
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
Cat *myCat = [[Cat alloc] init];
[myCat sleep]; // Optional মেথডটি ইমপ্লিমেন্ট করা হয়েছে
}
return 0;
}বিশেষ দৃষ্টি:
@optional: এটি প্রোটোকলে ডিফাইন করা মেথডকে ঐচ্ছিক করে তোলে, অর্থাৎ ক্লাসের পক্ষে তা ইমপ্লিমেন্ট না করলেও চলবে।- ক্লাস
Catএsleepমেথডটি Optional হওয়ায় এটি শুধুমাত্র ইচ্ছামত ইমপ্লিমেন্ট করা হয়েছে।
Optional এবং Required Methods এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Required Methods | Optional Methods |
|---|---|---|
| বাধ্যতামূলক | হ্যাঁ, ক্লাসকে ইমপ্লিমেন্ট করতে হয় | না, ক্লাস ইচ্ছামত ইমপ্লিমেন্ট করতে পারে |
@required বা @optional নির্দেশক | @required ব্যবহার করা হয় | @optional ব্যবহার করা হয় |
| প্রোটোকল ফলো করার জন্য ক্লাসের দায়িত্ব | Required মেথড ইমপ্লিমেন্ট করা বাধ্যতামূলক | Optional মেথড ইমপ্লিমেন্ট করা ঐচ্ছিক |
| ক্লাসের কাজের জন্য অপরিহার্যতা | এটি ক্লাসের কাজের জন্য অপরিহার্য | এটি ঐচ্ছিক এবং ক্লাসের কার্যকারিতার জন্য অপরিহার্য নয় |
সারাংশ
- Required methods: প্রোটোকলে ডিফাইন করা মেথড গুলি একটি ক্লাসকে অবশ্যই ইমপ্লিমেন্ট করতে হয়, এটি ক্লাসের কাজের জন্য অপরিহার্য।
- Optional methods: প্রোটোকলে ডিফাইন করা মেথড গুলি ইচ্ছামত ইমপ্লিমেন্ট করা হয়, এবং এটি ক্লাসের কাজের জন্য অপরিহার্য নয়।
Objective-C তে এই দুটি বৈশিষ্ট্য প্রোটোকলের মাধ্যমে ক্লাসের আচরণ কাস্টমাইজ করতে সাহায্য করে এবং কোডের নমনীয়তা বৃদ্ধি করে।
Read more