Swift-এ ইনহেরিটেন্স এবং পলিমরফিজম হলো অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর দুটি গুরুত্বপূর্ণ ধারণা। ইনহেরিটেন্সের মাধ্যমে আমরা একটি ক্লাস থেকে আরেকটি ক্লাস তৈরি করতে পারি এবং পলিমরফিজমের মাধ্যমে একই মেথড বিভিন্ন রূপে ব্যবহার করতে পারি। এগুলির মাধ্যমে কোডের পুনঃব্যবহারযোগ্যতা, মডুলারিটি, এবং স্থায়িত্ব বৃদ্ধি পায়।
ইনহেরিটেন্স (Inheritance)
ইনহেরিটেন্স হলো একটি প্রক্রিয়া, যার মাধ্যমে একটি ক্লাস অন্য একটি ক্লাস থেকে প্রোপার্টি এবং মেথড উত্তরাধিকারী হয়। ইনহেরিটেন্স ব্যবহার করে নতুন ক্লাস তৈরি করা যায়, যা পূর্ববর্তী ক্লাসের সব বৈশিষ্ট্য ও কার্যকারিতা উত্তরাধিকারী করে এবং প্রয়োজনে নতুন প্রোপার্টি ও মেথড যুক্ত করতে পারে।
উদাহরণ: ইনহেরিটেন্স ব্যবহার করে ক্লাস তৈরি করা
// Parent ক্লাস
class Animal {
var name: String
init(name: String) {
self.name = name
}
func sound() {
print("\(name) makes a sound.")
}
}
// Child ক্লাস, যা Animal ক্লাস থেকে ইনহেরিট করছে
class Dog: Animal {
func bark() {
print("\(name) barks.")
}
}
let myDog = Dog(name: "Buddy")
myDog.sound() // Output: "Buddy makes a sound."
myDog.bark() // Output: "Buddy barks."
- এখানে,
Animalহলো একটি প্যারেন্ট (বা বেস) ক্লাস, এবংDogহলো একটি চাইল্ড (বা ডেরাইভড) ক্লাস, যাAnimalক্লাস থেকে ইনহেরিট করছে। Dogক্লাসটিAnimalক্লাসের প্রোপার্টি (name) এবং মেথড (sound()) অ্যাক্সেস করতে পারে এবং নিজের নতুন মেথড (bark()) যোগ করতে পারে।
মেথড ওভাররাইডিং (Method Overriding)
Swift-এ, চাইল্ড ক্লাসে ইনহেরিট করা মেথডকে ওভাররাইড করা যায়, অর্থাৎ চাইল্ড ক্লাস সেই মেথডের নিজের সংস্করণ তৈরি করতে পারে। এটি পলিমরফিজমের একটি গুরুত্বপূর্ণ অংশ।
class Animal {
var name: String
init(name: String) {
self.name = name
}
func sound() {
print("\(name) makes a sound.")
}
}
class Cat: Animal {
override func sound() {
print("\(name) meows.")
}
}
let myCat = Cat(name: "Whiskers")
myCat.sound() // Output: "Whiskers meows."
- এখানে,
Catক্লাসটিAnimalক্লাস থেকে ইনহেরিট করেছে এবংsound()মেথড ওভাররাইড করেছে। ফলেCatক্লাসের ইনস্ট্যান্সsound()কল করলে নতুনভাবে ডিফাইন করা মেথড এক্সিকিউট হবে।
পলিমরফিজম (Polymorphism)
পলিমরফিজম হলো OOP-এর একটি ধারণা, যেখানে একটি মেথড বা ফাংশন বিভিন্ন ক্লাসে বিভিন্নভাবে আচরণ করতে পারে। অর্থাৎ, একই নামের মেথড বা প্রোপার্টি বিভিন্ন ক্লাসে বিভিন্নভাবে ব্যবহৃত হতে পারে। পলিমরফিজম সাধারণত ইনহেরিটেন্সের মাধ্যমে অর্জিত হয় এবং এটি কোডকে আরও ফ্লেক্সিবল এবং পুনঃব্যবহারযোগ্য করে তোলে।
উদাহরণ: পলিমরফিজম ব্যবহার করে
class Animal {
var name: String
init(name: String) {
self.name = name
}
func sound() {
print("\(name) makes a sound.")
}
}
class Dog: Animal {
override func sound() {
print("\(name) barks.")
}
}
class Cat: Animal {
override func sound() {
print("\(name) meows.")
}
}
let animals: [Animal] = [Dog(name: "Buddy"), Cat(name: "Whiskers")]
for animal in animals {
animal.sound()
}
- এখানে,
animalsহলোAnimalক্লাসের ইনস্ট্যান্সের একটি অ্যারে, যেখানেDogএবংCatক্লাসের অবজেক্ট রয়েছে। - লুপের ভিতরে
sound()মেথড কল করা হলে, প্রতিটি অবজেক্ট তার নিজস্ব ওভাররাইড করা মেথড এক্সিকিউট করে:
Buddy barks.
Whiskers meows.
এই উদাহরণে, একই নামের মেথড (sound()) বিভিন্ন ক্লাসে ভিন্নভাবে আচরণ করছে, যা পলিমরফিজমের একটি উদাহরণ।
ফাইনাল ক্লাস এবং মেথড
Swift-এ আপনি কোনো ক্লাস বা মেথডকে final হিসেবে ডিফাইন করতে পারেন, যাতে সেগুলো ইনহেরিট বা ওভাররাইড করা না যায়।
final class Bird {
var species: String
init(species: String) {
self.species = species
}
}
// এই ক্লাসটি আর ইনহেরিট করা যাবে না।
Birdক্লাসটিকেfinalহিসেবে ডিফাইন করা হয়েছে, তাই এটি আর অন্য কোনো ক্লাস থেকে ইনহেরিট করা যাবে না।
সংক্ষেপে ইনহেরিটেন্স এবং পলিমরফিজম
| বৈশিষ্ট্য | ইনহেরিটেন্স | পলিমরফিজম |
|---|---|---|
| বিবরণ | একটি ক্লাস আরেকটি ক্লাস থেকে প্রোপার্টি এবং মেথড ইনহেরিট করে। | একই নামের মেথড বা প্রোপার্টি ভিন্নভাবে ব্যবহৃত হতে পারে। |
| উদাহরণ | Dog ক্লাসটি Animal ক্লাস থেকে ইনহেরিট করে। | sound() মেথডটি Dog এবং Cat ক্লাসে ভিন্নভাবে ডিফাইন করা হয়েছে। |
উপসংহার
Swift-এ ইনহেরিটেন্স এবং পলিমরফিজম প্রোগ্রামের কোডকে আরও মডিউলার, পুনঃব্যবহারযোগ্য, এবং ফ্লেক্সিবল করে তোলে।
- ইনহেরিটেন্স: নতুন ক্লাস তৈরি করার সময় পূর্ববর্তী ক্লাসের বৈশিষ্ট্য এবং কার্যকারিতা পুনর্ব্যবহার করা যায়।
- পলিমরফিজম: একই মেথড বিভিন্ন ক্লাসে ভিন্নভাবে ব্যবহার করে কোডকে আরও ফ্লেক্সিবল করা যায়।
Swift-এর ইনহেরিটেন্স এবং পলিমরফিজম OOP কনসেপ্টের মাধ্যমে প্রোগ্রামিংকে আরও কার্যকর ও সুসংগঠিত করতে সহায়ক।
Read more