Groovy তে Traits একটি শক্তিশালী বৈশিষ্ট্য যা কোড রিইউজেবিলিটি (code reusability) নিশ্চিত করতে সাহায্য করে। Traits হল এমন একটি মেকানিজম, যা ক্লাসে একাধিক আচরণ (behavior) পুনঃব্যবহার করার জন্য ব্যবহৃত হয়। Traits মূলত একটি বিশেষ ধরনের ক্লাস বা ইন্টারফেস, যেগুলি কোনো ক্লাসের মধ্যে কিছু গঠন বা আচরণ সংযোজন (mixin) করতে ব্যবহৃত হয়।
Groovy তে Traits একটি ক্লাসের মধ্যে কোড শেয়ারিং এবং কমপ্লেক্সিটি কমানোর জন্য ব্যবহৃত হয়। Traits সাধারণত কোড পুনঃব্যবহারের জন্য ডিজাইন করা হয় এবং এতে কিছু ফাংশনালিটি বা মেথড ডিফাইন করা থাকে যা একাধিক ক্লাসে পুনঃব্যবহার করা যেতে পারে।
Groovy তে Traits একটি বিশেষ ধরনের অবজেক্ট যা ক্লাসের মধ্যে আচরণ বা ফাংশনালিটি যোগ করতে ব্যবহৃত হয়। এটি ক্লাসে মিশ্রণ করার (mixing) মাধ্যমে কোড পুনঃব্যবহার নিশ্চিত করে, এবং এতে কোনো স্টেট বা ডেটা রাখার প্রয়োজন নেই (অথবা খুব সীমিত থাকে)। Traits অন্য ক্লাসে "mixin" হিসেবে অন্তর্ভুক্ত করা হয়।
trait Greeter {
def greet(String name) {
println "Hello, $name!"
}
}
class Person implements Greeter {
def name
Person(String name) {
this.name = name
}
}
def person = new Person("Alice")
person.greet(person.name) // আউটপুট: Hello, Alice!
এখানে:
Greeter
একটি trait যা একটি greet()
মেথড ডিফাইন করে।Person
ক্লাসে Greeter
trait কে mixin করা হয়েছে।person.greet(person.name)
কল করে Greeter
trait এর greet()
মেথডকে ব্যবহার করা হয়েছে।Groovy তে একটি ক্লাস একাধিক trait মিশ্রিত করতে পারে। এতে ক্লাসের মধ্যে একাধিক আচরণ (behavior) ব্যবহার করা সম্ভব হয়।
trait Greeter {
def greet(String name) {
println "Hello, $name!"
}
}
trait Farewell {
def sayGoodbye(String name) {
println "Goodbye, $name!"
}
}
class Person implements Greeter, Farewell {
def name
Person(String name) {
this.name = name
}
}
def person = new Person("Bob")
person.greet(person.name) // আউটপুট: Hello, Bob!
person.sayGoodbye(person.name) // আউটপুট: Goodbye, Bob!
এখানে:
Greeter
এবং Farewell
দুটি আলাদা trait।Person
ক্লাসে Greeter
এবং Farewell
দুইটি trait মিশ্রিত (mix) করা হয়েছে।person
অবজেক্ট দুটি মেথড greet()
এবং sayGoodbye()
ব্যবহার করতে সক্ষম।Traits তে যদি একই মেথড একাধিক trait তে ডিফাইন করা থাকে, তাহলে আপনি ঐ মেথডটি override করতে পারেন। Groovy তে method overriding বা "method resolution" এর মাধ্যমে এটি পরিচালিত হয়।
trait Greeter {
def greet(String name) {
println "Hello, $name!"
}
}
trait Farewell {
def greet(String name) {
println "Goodbye, $name!"
}
}
class Person implements Greeter, Farewell {
def name
Person(String name) {
this.name = name
}
// greet() মেথড override করা হয়েছে
def greet(String name) {
println "Hi, $name!"
}
}
def person = new Person("Alice")
person.greet(person.name) // আউটপুট: Hi, Alice!
এখানে:
Greeter
এবং Farewell
trait এ একই নামের greet()
মেথড রয়েছে।Person
ক্লাসে greet()
মেথডটি override করা হয়েছে।person.greet()
কল করার পর Person
ক্লাসের greet()
মেথড কার্যকর হয়, যা Hi, Alice!
প্রিন্ট করে।Groovy তে traits সাধারণত স্টেট ধারণ করে না, তবে কিছু সীমিত স্টেট থাকতে পারে। আপনি যদি একটি trait এ স্টেট রাখেন, তবে সেটি সেই trait এর মধ্যে থাকবে, এবং অন্য ক্লাসের জন্য তা অ্যাক্সেসযোগ্য হবে না।
trait Greeter {
def name // trait এর মধ্যে স্টেট
def greet() {
println "Hello, $name!"
}
}
class Person implements Greeter {
def name
Person(String name) {
this.name = name
}
}
def person = new Person("Alice")
person.greet() // আউটপুট: Hello, Alice!
এখানে:
Greeter
trait এর মধ্যে name
নামে একটি স্টেট আছে।Person
ক্লাসে Greeter
trait ব্যবহার করা হয়েছে, এবং name
প্রপার্টি ক্লাস থেকে অ্যাক্সেস করা হয়েছে।Traits Groovy তে কোডের পুনঃব্যবহার এবং সহজতা নিশ্চিত করার জন্য একটি অত্যন্ত শক্তিশালী বৈশিষ্ট্য।
common.read_more