Dynamic Typing এবং Runtime Polymorphism

Inheritance এবং Polymorphism (ইনহেরিটেন্স এবং পলিমরফিজম) - অবজেক্টিভ-সি (Objective-C) - Computer Programming

271

Dynamic Typing এবং Runtime Polymorphism দুটি গুরুত্বপূর্ণ কনসেপ্ট যা অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং এবং বিশেষত Objective-C তে ব্যবহৃত হয়। এগুলির সাহায্যে আপনি কোডের আচরণকে আরও ফ্লেক্সিবল এবং নমনীয় করতে পারেন।

এখানে, আমরা Dynamic Typing এবং Runtime Polymorphism এর ব্যবহার এবং গুরুত্ব আলোচনা করব।


১. Dynamic Typing (ডায়নামিক টাইপিং)

Dynamic Typing হলো এমন একটি প্রক্রিয়া যেখানে ভেরিয়েবলের টাইপ রানটাইমে নির্ধারিত হয়, এর মানে হলো কোডে ভেরিয়েবলের টাইপের বিষয়ে কোন ধরণের আগাম সঠিক সিদ্ধান্ত নেওয়া হয় না, বরং এটি রানটাইমে নির্ধারিত হয়।

Objective-C তে Dynamic Typing ব্যবহৃত হয়, যেখানে আপনি id টাইপ ব্যবহার করে ভেরিয়েবল ডিক্লেয়ার করতে পারেন। id একটি ডায়নামিক টাইপ যা যেকোনো অবজেক্টের টাইপকে ধারণ করতে পারে। এর ফলে একই ভেরিয়েবল বিভিন্ন ধরনের অবজেক্ট ধারণ করতে পারে এবং টাইপ চেকিং রানটাইমে করা হয়।

উদাহরণ:

// Dynamic Typing with 'id'
id myObject;  // 'id' টাইপ, যেকোনো অবজেক্ট ধারণ করতে পারে

myObject = [[NSString alloc] initWithString:@"Hello, World!"];  // NSString অবজেক্ট
NSLog(@"%@", myObject);

myObject = [[NSArray alloc] initWithObjects:@"Apple", @"Banana", @"Cherry", nil];  // NSArray অবজেক্ট
NSLog(@"%@", myObject);

এখানে myObject ভেরিয়েবলটি id টাইপ হিসেবে ডিক্লেয়ার করা হয়েছে, এবং এটি প্রথমে NSString অবজেক্ট ধারণ করছে, পরে NSArray অবজেক্ট ধারণ করছে। এটি Dynamic Typing এর একটি উদাহরণ, কারণ ভেরিয়েবলের টাইপ রানটাইমে পরিবর্তিত হচ্ছে।

সুবিধা:

  • ফ্লেক্সিবিলিটি: একাধিক ধরনের অবজেক্ট ধারণ করার সুবিধা।
  • কমপ্লেক্স সিস্টেম: অবজেক্টের টাইপ নিশ্চিত না করেও কোড লেখা যায়।

অসুবিধা:

  • রানটাইম এরর: টাইপ চেকিং কম্পাইল টাইমে না হয়ে রানটাইমে হওয়ায় টাইপ সম্পর্কিত ত্রুটি বা সমস্যা হতে পারে।

২. Runtime Polymorphism (রানটাইম পলিমরফিজম)

Runtime Polymorphism বা Dynamic Polymorphism হলো এমন একটি প্রক্রিয়া যেখানে এক মেথড বা ফাংশন একাধিক ক্লাসে বিভিন্নভাবে কাজ করতে পারে এবং এটি রানটাইমে নির্ধারিত হয়। এটি সাধারণত মেথড ওভাররাইডিং এবং মেসেজ পাসিংয়ের মাধ্যমে ঘটে।

Objective-C তে Runtime Polymorphism অর্জিত হয় মেথড ওভাররাইডিং এবং ডাইনামিক ডিসপ্যাচ (Dynamic Dispatch) এর মাধ্যমে, যা রানটাইমে মেথডের বাস্তবায়ন নির্ধারণ করে।

উদাহরণ:

// Superclass
@interface Animal : NSObject
- (void)speak;
@end

@implementation Animal
- (void)speak {
    NSLog(@"Animal makes a sound");
}
@end

// Subclass
@interface Dog : Animal
- (void)speak; // Method override
@end

@implementation Dog
- (void)speak {
    NSLog(@"Dog barks");
}
@end

// Subclass
@interface Cat : Animal
- (void)speak; // Method override
@end

@implementation Cat
- (void)speak {
    NSLog(@"Cat meows");
}
@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Animal *myAnimal = [[Animal alloc] init];
        Animal *myDog = [[Dog alloc] init];
        Animal *myCat = [[Cat alloc] init];
        
        [myAnimal speak];  // Output: Animal makes a sound
        [myDog speak];     // Output: Dog barks
        [myCat speak];     // Output: Cat meows
    }
    return 0;
}

এখানে, speak মেথডটি Animal ক্লাসে ডিফাইন করা হয়েছে এবং এটি Dog এবং Cat ক্লাসে ওভাররাইড করা হয়েছে। যখন আপনি myDog বা myCat অবজেক্টের উপর speak মেথড কল করেন, তখন Runtime Polymorphism এর মাধ্যমে সঠিক মেথড বাস্তবায়ন রানটাইমে নির্বাচিত হয়।

সুবিধা:

  • ফ্লেক্সিবিলিটি: একই মেথড নামের মাধ্যমে বিভিন্ন ধরনের আচরণ তৈরি করা যায়।
  • বহু ধরনের অবজেক্টে একই আচরণ: একাধিক সাবক্লাসে একই মেথড ব্যবহার করা যায়।

অসুবিধা:

  • রানটাইম ওভারহেড: রানটাইমে ডিসপ্যাচিংয়ের ফলে কিছুটা কম্পিউটেশনাল ওভারহেড হতে পারে।

সারাংশ

  1. Dynamic Typing (ডায়নামিক টাইপিং):
    • এটি এমন একটি প্রক্রিয়া যেখানে ভেরিয়েবলের টাইপ রানটাইমে নির্ধারিত হয়।
    • Objective-C তে id টাইপ ব্যবহার করে ডায়নামিক টাইপিং করা যায়।
    • এতে কোডের ফ্লেক্সিবিলিটি বৃদ্ধি পায়, তবে টাইপ সম্পর্কিত সমস্যা রানটাইমে হতে পারে।
  2. Runtime Polymorphism (রানটাইম পলিমরফিজম):
    • এটি এমন একটি প্রক্রিয়া যেখানে এক মেথড একাধিক ক্লাসে ভিন্নভাবে কাজ করতে পারে এবং এটি রানটাইমে নির্ধারিত হয়।
    • Objective-C তে এটি মেথড ওভাররাইডিং এবং ডাইনামিক ডিসপ্যাচের মাধ্যমে অর্জিত হয়।
    • রানটাইম পলিমরফিজম কোডের নমনীয়তা বাড়ায়, কিন্তু কিছু কম্পিউটেশনাল ওভারহেড সৃষ্টি করতে পারে।

এই দুটি ধারণা Objective-C তে কোডিংকে আরও শক্তিশালী এবং নমনীয় করে তোলে, এবং কোডের পুনঃব্যবহারযোগ্যতা এবং ফ্লেক্সিবিলিটি নিশ্চিত করে।

Content added By
Promotion

Are you sure to start over?

Loading...