অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এ Inheritance (উত্তরাধিকার) একটি গুরুত্বপূর্ণ কনসেপ্ট, যেখানে একটি ক্লাস (Subclass) অন্য একটি ক্লাস (Superclass) থেকে বৈশিষ্ট্য এবং আচরণ (Properties and Methods) উত্তরাধিকারসূত্রে পেয়ে থাকে। অবজেক্টিভ-সি (Objective-C) তে Subclass তৈরি করা এবং Superclass থেকে Inherit করা খুবই সাধারণ এবং গুরুত্বপূর্ণ ধারণা। এখানে আমরা Subclass তৈরি এবং Superclass থেকে Inheritance সম্পর্কে বিস্তারিত আলোচনা করব।
১. Superclass এবং Subclass কী?
- Superclass: একটি ক্লাস যেটি অন্য ক্লাসের জন্য বৈশিষ্ট্য ও আচরণ প্রদান করে। এটি সাধারণত মূল বা সাধারণ ক্লাস হিসেবে কাজ করে।
- Subclass: একটি ক্লাস যা একটি Superclass থেকে উত্তরাধিকারসূত্রে বৈশিষ্ট্য এবং আচরণ গ্রহণ করে এবং প্রয়োজনে সেগুলিকে পরিবর্তন (Override) বা সম্প্রসারিত (Extend) করতে পারে।
২. Subclass তৈরি করা
Objective-C তে একটি Subclass তৈরি করার জন্য @interface ব্লকে Superclass এর নাম উল্লেখ করতে হয় এবং তারপরে @implementation ব্লকে Subclass এর কার্যক্রম উল্লেখ করা হয়।
উদাহরণ:
ধরা যাক, আমরা একটি Vehicle নামে একটি Superclass তৈরি করব এবং তারপরে তার থেকে একটি Car নামে Subclass তৈরি করব।
// Superclass - Vehicle.h
@interface Vehicle : NSObject
@property NSString *brand;
@property int year;
- (void) displayDetails; // Superclass এর মেথড
@end
// Superclass - Vehicle.m
@implementation Vehicle
- (void) displayDetails {
NSLog(@"Brand: %@, Year: %d", self.brand, self.year);
}
@end
// Subclass - Car.h
#import "Vehicle.h"
@interface Car : Vehicle // Vehicle ক্লাস থেকে Inherit করা
@property NSString *model;
- (void) displayCarDetails; // Subclass এর নতুন মেথড
@end
// Subclass - Car.m
@implementation Car
- (void) displayCarDetails {
[self displayDetails]; // Superclass এর মেথড কল
NSLog(@"Model: %@", self.model); // Subclass এর নতুন বৈশিষ্ট্য
}
@end- Superclass
Vehicle: এখানেVehicleএকটি সাধারণ ক্লাস যেখানেbrand,yearপ্রপার্টি এবং একটি সাধারণ মেথডdisplayDetailsডিক্লেয়ার করা হয়েছে। - Subclass
Car: এখানেCarক্লাসটিVehicleক্লাস থেকে উত্তরাধিকার পেয়েছে। এটিdisplayCarDetailsনামক একটি নতুন মেথড ডিফাইন করেছে, যেখানে Superclass এর মেথডdisplayDetailsকল করা হচ্ছে এবং নতুন প্রপার্টিmodelএর মান প্রদর্শিত হচ্ছে।
৩. Superclass থেকে Inherit করা
যখন একটি ক্লাস অন্য একটি ক্লাস থেকে inherit (উত্তরাধিকার) করে, তখন Superclass এর সমস্ত বৈশিষ্ট্য এবং মেথড Subclass এ চলে আসে, এবং Subclass এ তার প্রয়োজন অনুযায়ী নতুন বৈশিষ্ট্য এবং মেথড যোগ করা যায়। Objective-C তে ইনহেরিটেন্স করার জন্য, @interface ব্লকে Superclass এর নাম উল্লেখ করতে হয় এবং @implementation ব্লকে Subclass এর আচরণ ডিফাইন করতে হয়।
Subclass থেকে Superclass এর মেথড কল:
int main(int argc, const char * argv[]) {
@autoreleasepool {
Car *myCar = [[Car alloc] init]; // Car ক্লাসের একটি অবজেক্ট তৈরি
myCar.brand = @"Tesla";
myCar.year = 2022;
myCar.model = @"Model 3";
[myCar displayCarDetails]; // Subclass এর মেথড কল
}
return 0;
}এখানে myCar অবজেক্ট Car ক্লাসের ইন্সট্যান্স, যা Vehicle ক্লাস থেকে brand, year প্রপার্টি এবং displayDetails মেথড উত্তরাধিকার পেয়েছে।
- Superclass মেথড Call:
displayCarDetailsমেথডেdisplayDetailsমেথড কল করা হয়েছে, যেটিVehicleক্লাস থেকে ইনহেরিট করা হয়েছে।
৪. Method Overriding (মেথড ওভাররাইডিং)
Subclass এ একটি Superclass এর মেথডকে নতুনভাবে বাস্তবায়ন (Override) করা যায়। এটি তখন কার্যকরী হয় যখন Superclass এর মেথডের কার্যকারিতা পরিবর্তন করার প্রয়োজন হয়।
উদাহরণ:
ধরা যাক, Car ক্লাসে displayDetails মেথডটি ওভাররাইড করে কিছু অতিরিক্ত কাজ করা হবে।
// Subclass - Car.m
@implementation Car
- (void) displayDetails { // Superclass এর মেথড ওভাররাইড করা হচ্ছে
NSLog(@"Car Brand: %@, Year: %d", self.brand, self.year);
}
@endএখানে Car ক্লাসে displayDetails মেথডটি ওভাররাইড করা হয়েছে, যাতে এটি Car এর নির্দিষ্ট বৈশিষ্ট্যগুলো প্রদর্শন করতে পারে, যেমন Car এর brand এবং year।
৫. super কিওয়ার্ড ব্যবহার
Objective-C তে super কিওয়ার্ড ব্যবহার করে Subclass থেকে Superclass এর মেথড কল করা যায়। যখন Subclass এর মেথডে Superclass এর কোনো মেথড পুনঃব্যবহার করতে চান, তখন super কিওয়ার্ড ব্যবহার করা হয়।
উদাহরণ:
// Subclass - Car.m
@implementation Car
- (void) displayCarDetails {
[super displayDetails]; // Superclass এর মেথড কল করা হচ্ছে
NSLog(@"Model: %@", self.model); // Subclass এর নতুন বৈশিষ্ট্য
}
@endএখানে [super displayDetails]; ব্যবহার করা হয়েছে, যাতে Superclass এর displayDetails মেথডটি কল করা যায়।
সারাংশ
- Superclass: এটি মূল বা সাধারণ ক্লাস, যা অন্যান্য ক্লাসের জন্য কিছু বৈশিষ্ট্য এবং আচরণ প্রদান করে।
- Subclass: এটি একটি ক্লাস যা Superclass থেকে ইনহেরিট (উত্তরাধিকার) করে এবং Superclass এর বৈশিষ্ট্য এবং আচরণ পায়। Subclass এ নতুন বৈশিষ্ট্য এবং মেথড যোগ করা যায়।
- Inheritance: এটি একটি OOP কনসেপ্ট যেখানে Subclass, Superclass এর প্রপার্টি এবং মেথড পেয়ে থাকে।
- Method Overriding: Subclass এ Superclass এর মেথডকে নতুনভাবে ডিফাইন করা। এটি তখন কার্যকরী হয় যখন Superclass এর মেথডের কার্যকারিতা পরিবর্তন করা প্রয়োজন হয়।
superকিওয়ার্ড: এটি Subclass থেকে Superclass এর মেথড কল করার জন্য ব্যবহৃত হয়।
অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং এ ইনহেরিটেন্স খুবই গুরুত্বপূর্ণ কনসেপ্ট, যা কোড পুনঃব্যবহার এবং কার্যকরী মডুলারিটি প্রদান করে।
Read more