স্কালার ক্লাস এবং অবজেক্ট উভয়ই গুরুত্বপূর্ণ বৈশিষ্ট্য এবং এটি একটি অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং ভাষা হওয়ার কারণে, স্কালায় সব কিছুই অবজেক্টের সাথে সম্পর্কিত। এই অধ্যায়ে, আমরা স্কালার ক্লাস এবং অবজেক্ট সম্পর্কে বিস্তারিতভাবে আলোচনা করব।
১. স্কালা ক্লাস (Scala Class)
স্কালায় ক্লাস একটি ব্লুপ্রিন্ট বা টেমপ্লেট হিসেবে কাজ করে, যার মধ্যে ডাটা (অ্যাট্রিবিউট) এবং মেথড (অ্যাকশন) সংরক্ষিত থাকে। ক্লাস ডিফাইন করার জন্য class কিওয়ার্ড ব্যবহার করা হয়।
ক্লাস ডেফিনিশন:
class ClassName {
// class body
}উদাহরণ: সাধারণ ক্লাস
class Person(val name: String, val age: Int) {
def greet(): Unit = {
println(s"Hello, my name is $name and I am $age years old.")
}
}
val person1 = new Person("Alice", 30)
person1.greet() // Output: Hello, my name is Alice and I am 30 years old.এখানে:
Personক্লাসের দুটি প্যারামিটার রয়েছে:nameএবংage, যেগুলিval(immutable) দিয়ে ডিফাইন করা হয়েছে।greetমেথডের মাধ্যমে আমরাnameএবংageআউটপুট হিসেবে প্রিন্ট করছি।new Person(...)দিয়ে ক্লাসের ইনস্ট্যান্স তৈরি করা হয়।
২. স্কালা অবজেক্ট (Scala Object)
স্কালার অবজেক্ট একটি একক ইনস্ট্যান্স, যা ক্লাসের মতো কাজ করে তবে শুধুমাত্র একটি অবজেক্ট থাকে। অবজেক্ট মূলত singleton ক্লাস, অর্থাৎ এর একমাত্র একটি ইনস্ট্যান্স থাকে। স্কালার অবজেক্ট সাধারণত এক্সিকিউটেবল কোডের জন্য ব্যবহৃত হয় এবং সাধারণত main মেথড থাকে যেখানে প্রোগ্রামটি শুরু হয়।
অবজেক্ট ডেফিনিশন:
object ObjectName {
// object body
}উদাহরণ: সাধারণ অবজেক্ট
object HelloWorld {
def main(args: Array[String]): Unit = {
println("Hello, Scala Object!")
}
}এখানে:
HelloWorldএকটি অবজেক্ট, যার মধ্যেmainমেথড রয়েছে।- অবজেক্টটি একবারই তৈরি হয় এবং এটি প্রোগ্রাম শুরু করার জন্য ব্যবহৃত হয়।
- স্কালায় object কিওয়ার্ডের মাধ্যমে একটি একক ইনস্ট্যান্স তৈরি হয়, যার মাধ্যমে আপনি কোডের কার্যকরী অংশ সম্পাদন করতে পারেন।
৩. ক্লাস এবং অবজেক্টের পার্থক্য
| পার্থক্য | ক্লাস (Class) | অবজেক্ট (Object) |
|---|---|---|
| ইনস্ট্যান্স | ক্লাস থেকে একাধিক ইনস্ট্যান্স তৈরি করা যায় | একমাত্র একটি ইনস্ট্যান্স থাকে |
| সংজ্ঞা | class কিওয়ার্ড দিয়ে ডিফাইন করা হয় | object কিওয়ার্ড দিয়ে ডিফাইন করা হয় |
| ব্যবহার | অবজেক্ট তৈরি করার জন্য ক্লাস ব্যবহার করা হয় | একমাত্র ইনস্ট্যান্সের মাধ্যমে কাজ সম্পাদন করা হয় |
| স্টেট | ক্লাসের মধ্যে স্টেট থাকতে পারে | অবজেক্টের মধ্যে একটি একক ইনস্ট্যান্স থাকে |
| ইনস্ট্যান্স তৈরি | new ClassName ব্যবহার করে ইনস্ট্যান্স তৈরি করা হয় | সরাসরি অবজেক্টের নাম দিয়ে এক্সেস করা যায় |
৪. ক্লাসের মধ্যে কনস্ট্রাক্টর (Constructor) ব্যবহার
স্কালায়, কনস্ট্রাক্টর ক্লাসের সাথে যুক্ত থাকে এবং এটি ক্লাসের ইনস্ট্যান্স তৈরি করার সময় ব্যবহৃত হয়। স্কালায় দুটি কনস্ট্রাক্টর থাকে:
- প্রধান কনস্ট্রাক্টর: ক্লাসের সাথে সরাসরি যুক্ত থাকে।
- সহায়ক কনস্ট্রাক্টর: অতিরিক্ত কনস্ট্রাক্টর ফাংশন।
উদাহরণ: কনস্ট্রাক্টর ব্যবহার
class Person(val name: String, val age: Int) {
println(s"Person created: $name, $age")
}
val person1 = new Person("Alice", 30)এখানে:
Personক্লাসে দুটি প্যারামিটারnameএবংageরয়েছে, যেগুলি প্রধান কনস্ট্রাক্টর হিসেবে ব্যবহৃত হচ্ছে।- যখন
new Person("Alice", 30)কল করা হয়, তখনnameএবংageপ্যারামিটার দিয়ে কনস্ট্রাক্টর ইনিশিয়ালাইজ করা হয়।
৫. বিভিন্ন অবজেক্টের মধ্যে এক্সেস
স্কালায়, আপনি একটি অবজেক্টের মধ্যে ডিফাইন করা মেথড এবং ভ্যারিয়েবল অন্য অবজেক্ট থেকে এক্সেস করতে পারেন। একে সিঙ্গেলটন প্যাটার্ন বলা হয়।
উদাহরণ: অবজেক্টের মধ্যে এক্সেস
object Singleton {
val message = "Hello from Singleton"
def greet(): Unit = {
println(message)
}
}
object MainApp {
def main(args: Array[String]): Unit = {
Singleton.greet() // Accessing method from Singleton object
}
}এখানে:
Singletonঅবজেক্টেgreet()মেথড এবং একটি ভ্যারিয়েবলmessageরয়েছে।MainAppঅবজেক্ট থেকেSingleton.greet()মেথড এক্সেস করা হচ্ছে।
৬. অবজেক্ট এবং ক্লাসের মধ্যে মিশ্রণ
স্কালায় আপনি একে অপরের সাথে ক্লাস এবং অবজেক্ট ব্যবহার করতে পারেন। কখনো কখনো, একটি ক্লাস এবং একটি অবজেক্ট একসাথে একটি কার্যকরী কাঠামো তৈরি করতে ব্যবহৃত হয়।
উদাহরণ: ক্লাস এবং অবজেক্টের মিশ্রণ
class Car(val make: String, val model: String) {
def displayDetails(): Unit = {
println(s"Car make: $make, model: $model")
}
}
object CarFactory {
def createCar(make: String, model: String): Car = {
new Car(make, model)
}
}
object MainApp {
def main(args: Array[String]): Unit = {
val car = CarFactory.createCar("Toyota", "Corolla")
car.displayDetails() // Output: Car make: Toyota, model: Corolla
}
}এখানে:
Carএকটি ক্লাস যা গাড়ির তথ্য সংরক্ষণ করে।CarFactoryএকটি অবজেক্ট যাCarক্লাসের ইনস্ট্যান্স তৈরি করে।MainAppঅবজেক্ট থেকে ফ্যাক্টরি মেথডCarFactory.createCarকল করে গাড়ির বিস্তারিত দেখানো হচ্ছে।
সারাংশ
- ক্লাস (Class): স্কালায় ক্লাস হল একটি টেমপ্লেট বা ব্লুপ্রিন্ট, যা অবজেক্ট তৈরি করতে ব্যবহৃত হয়। ক্লাসের মাধ্যমে আপনি একটি অবজেক্টের বিভিন্ন বৈশিষ্ট্য এবং আচরণ ডিফাইন করতে পারেন।
- অবজেক্ট (Object): স্কালায় অবজেক্ট একটি একক ইনস্ট্যান্স থাকে এবং এটি সাধারণত ফাংশনাল প্রোগ্রামিংয়ে ব্যবহৃত হয়। এটি একটি singleton অবজেক্ট, যার একাধিক ইনস্ট্যান্স থাকে না।
স্কালায় ক্লাস এবং অবজেক্ট ব্যবহারের মাধ্যমে আপনি শক্তিশালী এবং স্কেলেবল প্রোগ্রাম তৈরি করতে পারেন।
Read more