Classes এবং Objects
কটলিনে Classes এবং Objects হলো অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর মূল ভিত্তি। ক্লাস হলো একটি ব্লুপ্রিন্ট যা অবজেক্ট তৈরি করতে ব্যবহৃত হয়, আর অবজেক্ট হলো সেই ক্লাসের একটি নির্দিষ্ট ইন্সট্যান্স। কটলিনে ক্লাস এবং অবজেক্ট তৈরি করা এবং পরিচালনা করা বেশ সহজ এবং সিম্পল। নিচে ক্লাস এবং অবজেক্ট নিয়ে বিস্তারিত আলোচনা করা হলো:
১. ক্লাস (Class)
ক্লাস হলো একটি ব্লুপ্রিন্ট বা টেমপ্লেট যা ডেটা এবং ফাংশন (মেথড) ধারণ করে। এর মাধ্যমে আপনি একটি নির্দিষ্ট ডেটা টাইপ এবং তার সাথে সম্পর্কিত অপারেশনগুলো নির্ধারণ করতে পারেন।
i) ক্লাস ডিক্লারেশন
কটলিনে একটি ক্লাস ডিক্লারেশন করতে class কীওয়ার্ড ব্যবহার করা হয়।
উদাহরণ:
class Person {
// প্রোপার্টিজ
var name: String = ""
var age: Int = 0
// মেথড
fun displayInfo() {
println("Name: $name, Age: $age")
}
}
ব্যাখ্যা:
Personহলো একটি ক্লাস যেখানে দুটি প্রোপার্টি (nameএবংage) এবং একটি মেথড (displayInfo) আছে।- মেথডটি
nameএবংageপ্রোপার্টিগুলো প্রিন্ট করে।
ii) ক্লাস থেকে অবজেক্ট তৈরি
একটি ক্লাস থেকে অবজেক্ট তৈরি করা হলে সেই ক্লাসের প্রোপার্টি এবং মেথডগুলো অবজেক্টের সাথে অ্যাক্সেস করা যায়।
উদাহরণ:
fun main() {
val person = Person()
person.name = "Alice"
person.age = 25
person.displayInfo() // আউটপুট: Name: Alice, Age: 25
}
ব্যাখ্যা:
Person()এর মাধ্যমে একটি নতুন অবজেক্ট তৈরি করা হয়েছে এবং সেটিpersonভ্যারিয়েবলে অ্যাসাইন করা হয়েছে।- এরপর, অবজেক্টের প্রোপার্টি সেট করা হয়েছে এবং মেথড কল করে ইনফরমেশন প্রিন্ট করা হয়েছে।
২. কনস্ট্রাক্টর (Constructor)
কটলিনে ক্লাসে ডিফল্টভাবে একটি প্রাইমারি কনস্ট্রাক্টর থাকে যা প্রোপার্টিগুলো ইনিশিয়ালাইজ করতে ব্যবহৃত হয়।
i) প্রাইমারি কনস্ট্রাক্টর
ক্লাসের সাথে সরাসরি প্রাইমারি কনস্ট্রাক্টর ডিক্লেয়ার করা যায়।
উদাহরণ:
class Person(val name: String, var age: Int) {
fun displayInfo() {
println("Name: $name, Age: $age")
}
}
ব্যাখ্যা:
- এখানে
nameএবংageপ্রোপার্টি প্রাইমারি কনস্ট্রাক্টরের মধ্যে ডিক্লেয়ার করা হয়েছে।
ii) অবজেক্ট তৈরি করার সময় কনস্ট্রাক্টর ব্যবহার করা
fun main() {
val person = Person("Bob", 30)
person.displayInfo() // আউটপুট: Name: Bob, Age: 30
}
ব্যাখ্যা:
Person("Bob", 30)এর মাধ্যমে কনস্ট্রাক্টর কল করা হয়েছে এবং প্রোপার্টিগুলো ইনিশিয়ালাইজ করা হয়েছে।
৩. সেকেন্ডারি কনস্ট্রাক্টর
কটলিনে আপনি প্রাইমারি কনস্ট্রাক্টর ছাড়াও সেকেন্ডারি কনস্ট্রাক্টর ব্যবহার করতে পারেন। এটি তখন ব্যবহার করা হয় যখন আপনি ক্লাসের ভিন্ন ভিন্ন ইনিশিয়ালাইজেশন করতে চান।
উদাহরণ:
class Person {
var name: String
var age: Int
// প্রাইমারি কনস্ট্রাক্টর নেই, তবে সেকেন্ডারি কনস্ট্রাক্টর আছে
constructor(name: String, age: Int) {
this.name = name
this.age = age
}
fun displayInfo() {
println("Name: $name, Age: $age")
}
}
fun main() {
val person = Person("Charlie", 28)
person.displayInfo() // আউটপুট: Name: Charlie, Age: 28
}
ব্যাখ্যা:
- এখানে
constructorকীওয়ার্ড ব্যবহার করে সেকেন্ডারি কনস্ট্রাক্টর ডিক্লেয়ার করা হয়েছে, যেখানে প্রোপার্টিগুলো ইনিশিয়ালাইজ করা হয়েছে।
৪. ইনহেরিটেন্স (Inheritance)
কটলিনে ইনহেরিটেন্স ব্যবহার করে একটি ক্লাস অন্য ক্লাস থেকে প্রোপার্টি এবং মেথডগুলো ইনহেরিট করতে পারে।
উদাহরণ:
open class Animal(val name: String) {
fun eat() {
println("$name is eating.")
}
}
class Dog(name: String, val breed: String) : Animal(name) {
fun bark() {
println("$name is barking.")
}
}
fun main() {
val dog = Dog("Max", "Labrador")
dog.eat() // আউটপুট: Max is eating.
dog.bark() // আউটপুট: Max is barking.
}
ব্যাখ্যা:
Animalহলো একটি ওপেন ক্লাস যা ইনহেরিট করা যাবে।Dogক্লাসটিAnimalক্লাসটি ইনহেরিট করছে এবং অতিরিক্ত একটি মেথড (bark) যোগ করছে।
৫. অবজেক্ট (Object)
কটলিনে অবজেক্ট হলো একটি নির্দিষ্ট ক্লাসের ইন্সট্যান্স। আপনি সরাসরি অবজেক্ট তৈরি করতে পারেন এবং এটি একটি সিঙ্গেলটন অবজেক্ট হতে পারে।
i) সিঙ্গেলটন অবজেক্ট
কটলিনে object কীওয়ার্ড ব্যবহার করে সিঙ্গেলটন অবজেক্ট তৈরি করা যায়।
উদাহরণ:
object Singleton {
var counter: Int = 0
fun increment() {
counter++
}
}
fun main() {
Singleton.increment()
Singleton.increment()
println(Singleton.counter) // আউটপুট: 2
}
ব্যাখ্যা:
Singletonঅবজেক্টে একটি প্রোপার্টি (counter) এবং একটি মেথড (increment) আছে।- এই অবজেক্টের মেথড কল করে আমরা ভ্যালু পরিবর্তন করতে পারি, যা একই রেফারেন্স থেকে অ্যাক্সেস করা হয়।
উপসংহার
কটলিনে Classes এবং Objects প্রোগ্রামের মূল কাঠামো তৈরি করতে ব্যবহৃত হয়। ক্লাসের মাধ্যমে আপনি প্রোপার্টি এবং মেথড ডিফাইন করতে পারেন, যা অবজেক্টের মাধ্যমে অ্যাক্সেস করা যায়। ইনহেরিটেন্স এবং কনস্ট্রাক্টর ব্যবহার করে আরও জটিল এবং পুনঃব্যবহারযোগ্য কোড তৈরি করা যায়। সিঙ্গেলটন অবজেক্ট তৈরি করেও একটি নির্দিষ্ট অবজেক্টকে শেয়ার করা যায়।
Read more