Inheritance, Polymorphism, এবং Interfaces in Groovy
Groovy তে Inheritance, Polymorphism, এবং Interfaces অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর মূল নীতি যা কোড পুনঃব্যবহারযোগ্য, মডুলার এবং ডায়নামিক প্রোগ্রামিংয়ের জন্য সহায়ক। Groovy তে এই ধারণাগুলি Java এর মতো কাজ করে, তবে এর সিনট্যাক্স অনেকটা সহজ ও সংক্ষিপ্ত।
এখানে Inheritance, Polymorphism, এবং Interfaces সম্পর্কে বিস্তারিত আলোচনা করা হলো।
1. Inheritance (ইনহেরিটেন্স)
ইনহেরিটেন্স হল একটি অবজেক্ট-ওরিয়েন্টেড ধারণা যেখানে একটি ক্লাস অন্য ক্লাসের বৈশিষ্ট্য (প্রপার্টি এবং মেথড) উত্তরাধিকারসূত্রে পায়। এটি কোড পুনঃব্যবহারযোগ্যতার জন্য সহায়ক, কারণ আমরা বিদ্যমান কোডের উপর নতুন বৈশিষ্ট্য বা ফাংশনালিটি যোগ করতে পারি।
1.1 ইনহেরিটেন্স উদাহরণ
// Superclass
class Animal {
String name
def speak() {
println "$name makes a sound"
}
}
// Subclass
class Dog extends Animal {
def speak() {
println "$name barks"
}
}
def dog = new Dog(name: "Rex")
dog.speak() // Output: Rex barksএখানে, Dog ক্লাস Animal ক্লাস থেকে ইনহেরিট করেছে এবং speak() মেথডটি ওভাররাইড করেছে।
1.2 Super Keyword
আপনি super কিওয়ার্ড ব্যবহার করে সুপার ক্লাসের মেথড অথবা কন্সট্রাক্টর কল করতে পারেন।
class Animal {
String name
Animal(String name) {
this.name = name
}
def speak() {
println "$name makes a sound"
}
}
class Dog extends Animal {
Dog(String name) {
super(name)
}
def speak() {
super.speak() // Calling the speak method of Animal class
println "$name barks"
}
}
def dog = new Dog("Rex")
dog.speak()এখানে, Dog ক্লাসে super.speak() ব্যবহার করে Animal ক্লাসের speak() মেথড কল করা হয়েছে।
2. Polymorphism (পলিমরফিজম)
পলিমরফিজম হল এমন একটি ধারণা যেখানে একাধিক ক্লাস একই নামের মেথড ব্যবহার করতে পারে, তবে তাদের কার্যকারিতা ভিন্ন হতে পারে। Groovy তে পলিমরফিজম মেথড ওভাররাইডিং এবং ওভারলোডিং এর মাধ্যমে অর্জিত হয়।
2.1 মেথড ওভাররাইডিং (Method Overriding)
class Animal {
def sound() {
println "Animal makes a sound"
}
}
class Dog extends Animal {
@Override
def sound() {
println "Dog barks"
}
}
class Cat extends Animal {
@Override
def sound() {
println "Cat meows"
}
}
def dog = new Dog()
dog.sound() // Output: Dog barks
def cat = new Cat()
cat.sound() // Output: Cat meowsএখানে, Dog এবং Cat ক্লাস দুটি sound() মেথডের কার্যকারিতা ভিন্নভাবে বাস্তবায়ন করেছে, যদিও মেথডের নাম এক। এটি পলিমরফিজম।
2.2 পলিমরফিক আচরণ (Polymorphic Behavior)
Groovy তে আপনি একই ক্লাসের অবজেক্ট ব্যবহার করে বিভিন্ন আচরণ দেখতে পারেন:
def animal = new Dog()
animal.sound() // Output: Dog barks
animal = new Cat()
animal.sound() // Output: Cat meowsএখানে, animal অবজেক্টের রেফারেন্স আলাদা আলাদা ক্লাসের (Dog এবং Cat) উপর নির্ভর করে ভিন্ন ভিন্ন আচরণ প্রদর্শন করছে।
3. Interfaces (ইন্টারফেস)
Groovy তে ইন্টারফেস একটি সংজ্ঞায়িত চুক্তি যা কোন ক্লাসের মেথডের সিগনেচার সংরক্ষণ করে। একটি ক্লাস একাধিক ইন্টারফেস ইমপ্লিমেন্ট (অথবা বাস্তবায়ন) করতে পারে এবং এতে থাকা মেথডগুলির বাস্তবায়ন প্রদান করতে পারে। Groovy তে ইন্টারফেসের মাধ্যমে ক্লাসগুলির মধ্যে কম্পোজিশন এবং নমনীয়তা বৃদ্ধি করা হয়।
3.1 ইন্টারফেস ডিফাইন করা
interface Animal {
def speak()
}
class Dog implements Animal {
def speak() {
println "The dog barks"
}
}
class Cat implements Animal {
def speak() {
println "The cat meows"
}
}
def dog = new Dog()
dog.speak() // Output: The dog barks
def cat = new Cat()
cat.speak() // Output: The cat meowsএখানে, Animal একটি ইন্টারফেস এবং Dog ও Cat ক্লাস গুলি এই ইন্টারফেস ইমপ্লিমেন্ট করেছে। প্রতিটি ক্লাস তাদের নিজস্ব speak() মেথডের বাস্তবায়ন দিয়েছে।
3.2 একাধিক ইন্টারফেস ইমপ্লিমেন্ট করা
Groovy তে একটি ক্লাস একাধিক ইন্টারফেসও ইমপ্লিমেন্ট করতে পারে:
interface Animal {
def speak()
}
interface Pet {
def play()
}
class Dog implements Animal, Pet {
def speak() {
println "The dog barks"
}
def play() {
println "The dog plays"
}
}
def dog = new Dog()
dog.speak() // Output: The dog barks
dog.play() // Output: The dog playsএখানে, Dog ক্লাস দুটি ইন্টারফেস (Animal এবং Pet) ইমপ্লিমেন্ট করেছে এবং তাদের মেথডগুলির বাস্তবায়ন প্রদান করেছে।
সারসংক্ষেপ
- ইনহেরিটেন্স: Groovy তে একটি ক্লাস অন্য একটি ক্লাস থেকে বৈশিষ্ট্য (প্রপার্টি এবং মেথড) উত্তরাধিকারসূত্রে পায়, যা কোড পুনঃব্যবহারযোগ্যতার জন্য সহায়ক।
- পলিমরফিজম: একাধিক ক্লাস একই নামের মেথড ব্যবহার করতে পারে এবং তাদের কার্যকারিতা ভিন্ন হতে পারে। এটি কোডে নমনীয়তা আনে।
- ইন্টারফেস: ইন্টারফেস হল একটি চুক্তি যা ক্লাসের মেথডের সিগনেচার নির্ধারণ করে। Groovy তে ক্লাস একাধিক ইন্টারফেস ইমপ্লিমেন্ট করতে পারে।
Groovy তে Inheritance, Polymorphism, এবং Interfaces এর সহজ সিনট্যাক্স এবং শক্তিশালী ব্যবহারের মাধ্যমে কোড পুনঃব্যবহার, নমনীয়তা এবং মডুলারিটি সহজতর হয়।
Read more