স্কালা কেস ক্লাস এবং কেস অবজেক্ট

স্কালায় প্যাটার্ন ম্যাচিং - স্কালা প্রোগ্রামিং (Scala Programming) - Computer Programming

236

স্কালায় কেস ক্লাস এবং কেস অবজেক্ট দুটি বিশেষ ধরনের ক্লাস এবং অবজেক্ট, যা মূলত ডাটা হোল্ডিং এবং ডাটা ম্যানিপুলেশন এর জন্য ব্যবহৃত হয়। এগুলি স্কালার ফাংশনাল প্রোগ্রামিং ধারণা অনুসরণ করে এবং অনেক কাজ সহজ করে দেয়। স্কালায় কেস ক্লাস এবং কেস অবজেক্ট ব্যবহার করার ফলে আপনি কম কোডে বেশি কার্যকারিতা পেতে পারেন।


১. কেস ক্লাস (Case Class)

কেস ক্লাস একটি বিশেষ ধরনের ক্লাস যা ডাটা হোল্ডিং এর জন্য ব্যবহৃত হয়। কেস ক্লাস ব্যবহার করার মাধ্যমে আপনি সহজে immutable (অবদলনযোগ্য) ডাটা তৈরি করতে পারেন এবং এর সাথে কিছু বিশেষ ফিচার আসে যা সাধারণ ক্লাসে পাওয়া যায় না, যেমন:

  • অটোমেটিক toString মেথড।
  • অটোমেটিক equals এবং hashCode মেথড।
  • ক্লোনিং (copy) সমর্থন।
  • প্যাটার্ন ম্যাচিং এর জন্য উপযুক্ত।

কেস ক্লাস ডেফিনিশন:

case class Person(name: String, age: Int)

এখানে:

  • case class দিয়ে Person নামক একটি কেস ক্লাস তৈরি করা হয়েছে, যেখানে দুটি প্রপার্টি name এবং age রয়েছে।

কেস ক্লাস ব্যবহার:

object CaseClassExample {
  def main(args: Array[String]): Unit = {
    // কেস ক্লাস ইনস্ট্যান্স তৈরি
    val person1 = Person("Alice", 30)
    val person2 = Person("Bob", 25)

    // কেস ক্লাসের toString ব্যবহার
    println(person1)  // Output: Person(Alice,30)

    // কেস ক্লাসের copy মেথড ব্যবহার
    val person3 = person1.copy(age = 31)
    println(person3)  // Output: Person(Alice,31)

    // equals মেথড
    println(person1 == person2)  // Output: false
    println(person1 == person1)  // Output: true
  }
}

এখানে:

  • toString মেথডটি কেস ক্লাসের ইনস্ট্যান্সটি সুস্পষ্টভাবে প্রিন্ট করে।
  • copy মেথডের মাধ্যমে একটি নতুন ইনস্ট্যান্স তৈরি করা হচ্ছে, যেখানে শুধুমাত্র age পরিবর্তন করা হয়েছে।
  • equals মেথডের মাধ্যমে দুটি কেস ক্লাসের ইনস্ট্যান্সের সমতা পরীক্ষা করা হচ্ছে।

কেস ক্লাসের অন্যান্য ফিচার:

  • প্যাটার্ন ম্যাচিং: কেস ক্লাস প্যাটার্ন ম্যাচিংয়ে ব্যবহৃত হয়।
val person = Person("Alice", 30)

person match {
  case Person(name, age) => println(s"Name: $name, Age: $age")
}

এখানে:

  • Person(name, age) প্যাটার্ন ম্যাচিং ব্লক ব্যবহার করে কেস ক্লাসের মান এক্সট্র্যাক্ট করা হয়েছে।

২. কেস অবজেক্ট (Case Object)

স্কালায় কেস অবজেক্ট সাধারণত একটি সিঙ্গেলটন (singleton) অবজেক্ট যা প্যাটার্ন ম্যাচিং বা ডেটা হোল্ডিং এর জন্য ব্যবহৃত হয়। কেস অবজেক্ট সাধারণ ক্লাসের মতোই তবে এটি একমাত্র এক ইনস্ট্যান্স থাকে এবং এরও toString, equals এবং hashCode মেথডগুলি অটোমেটিকভাবে তৈরি হয়।

কেস অবজেক্ট ডেফিনিশন:

case object Singleton

এখানে:

  • case object দিয়ে Singleton নামে একটি কেস অবজেক্ট তৈরি করা হয়েছে।

কেস অবজেক্ট ব্যবহার:

object CaseObjectExample {
  def main(args: Array[String]): Unit = {
    // কেস অবজেক্ট ব্যবহার
    println(Singleton)  // Output: Singleton
  }
}

এখানে:

  • Singleton কেস অবজেক্টের ইনস্ট্যান্সটি একটি একক ইনস্ট্যান্স, এবং তার toString মেথডটি স্বয়ংক্রিয়ভাবে "Singleton" রিটার্ন করবে।

কেস অবজেক্টে প্যাটার্ন ম্যাচিং:

object CaseObjectPatternMatching {
  def main(args: Array[String]): Unit = {
    val obj = Singleton

    obj match {
      case Singleton => println("Matched the Singleton object")
      case _ => println("Didn't match")
    }
  }
}

এখানে:

  • Singleton কেস অবজেক্টের সাথে প্যাটার্ন ম্যাচিং করা হচ্ছে এবং একটি নির্দিষ্ট ফলাফল রিটার্ন করা হচ্ছে।

৩. কেস ক্লাস এবং কেস অবজেক্টের পার্থক্য

বৈশিষ্ট্যকেস ক্লাস (Case Class)কেস অবজেক্ট (Case Object)
টাইপডাটা হোল্ডিং এবং ফাংশনাল প্রোগ্রামিং এর জন্য ব্যবহার হয়সিঙ্গেলটন অবজেক্টের জন্য ব্যবহৃত হয়
ইনস্ট্যান্সএকাধিক ইনস্ট্যান্স থাকতে পারেশুধুমাত্র একটি ইনস্ট্যান্স থাকে
প্যাটার্ন ম্যাচিংপ্যাটার্ন ম্যাচিংয়ে ব্যবহৃত হয়প্যাটার্ন ম্যাচিংয়ে ব্যবহৃত হয়
প্রধান ব্যবহারডাটা হোল্ডিং এবং ভ্যালু টাইপ ডিফাইন করতে ব্যবহৃত হয়সিঙ্গেলটন অবজেক্ট এবং স্টেটলেস অপারেশন হ্যান্ডল করার জন্য
স্টেটইনস্ট্যান্সের স্টেট থাকেসিঙ্গেল ইনস্ট্যান্স হওয়ায় স্টেট থাকে না

৪. কেস ক্লাস এবং কেস অবজেক্টের ব্যবহার কোথায় করবেন?

  • কেস ক্লাস: যখন আপনার ডেটার সাথে সম্পর্কিত অ্যাকশন এবং ফাংশনালিটি থাকতে হয় এবং আপনি চাইছেন ডাটা হোল্ডিং সহজ এবং ইমিউটেবল হোক, তখন কেস ক্লাস ব্যবহার করা উচিত। যেমন, API রেসপন্স, টিউপল, ভ্যালু টাইপ ইত্যাদি।
  • কেস অবজেক্ট: যখন আপনি সিঙ্গেলটন প্যাটার্ন ব্যবহার করতে চান বা কোনো একক ইনস্ট্যান্সে কাজ করতে চান, তখন কেস অবজেক্ট উপযুক্ত।

সারাংশ

  • কেস ক্লাস স্কালায় ডাটা হোল্ডিং, ইমিউটেবিলিটি এবং সহজ প্যাটার্ন ম্যাচিংয়ের জন্য ব্যবহৃত হয়।
  • কেস অবজেক্ট একক ইনস্ট্যান্সে কাজ করার জন্য এবং সিঙ্গেলটন ব্যবস্থাপনার জন্য ব্যবহৃত হয়।
  • কেস ক্লাস এবং কেস অবজেক্টের বিশেষ ফিচার যেমন toString, equals, hashCode, এবং প্যাটার্ন ম্যাচিং, স্কালাকে আরও শক্তিশালী এবং কার্যকরী করে তোলে।
Content added By
Promotion

Are you sure to start over?

Loading...