স্কালা কনস্ট্রাক্টর এবং ওভারলোডিং

স্কালা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং - স্কালা প্রোগ্রামিং (Scala Programming) - Computer Programming

247

স্কালায় কনস্ট্রাক্টর এবং ওভারলোডিং দুটি অত্যন্ত গুরুত্বপূর্ণ ধারণা, যা প্রোগ্রামিংয়ের ক্ষেত্রে ক্লাসের ভেতরে বিভিন্ন ধরনের ইনস্ট্যান্স তৈরি এবং মেথডের একাধিক সংস্করণ তৈরি করতে সহায়তা করে। এখানে স্কালার কনস্ট্রাক্টর এবং ওভারলোডিং সম্পর্কে বিস্তারিত আলোচনা করা হলো।


১. কনস্ট্রাক্টর (Constructor)

স্কালায় কনস্ট্রাক্টর একটি বিশেষ মেথড যা ক্লাসের নতুন ইনস্ট্যান্স তৈরি করতে ব্যবহৃত হয়। এটি ক্লাসের একটি অংশ হিসেবে স্বয়ংক্রিয়ভাবে কল হয় যখন নতুন অবজেক্ট তৈরি করা হয়। স্কালায় দুটি ধরনের কনস্ট্রাক্টর থাকে:

  1. প্রধান কনস্ট্রাক্টর: যেটি ক্লাসের সাথেই ডিফাইন করা হয় এবং ক্লাসের মূল কনস্ট্রাক্টর হিসেবে কাজ করে।
  2. সহায়ক কনস্ট্রাক্টর: যেটি ক্লাসের ভিতরে অতিরিক্ত কনস্ট্রাক্টর হিসেবে ব্যবহৃত হয়।

১.১ প্রধান কনস্ট্রাক্টর (Primary Constructor)

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

উদাহরণ:

class Person(val name: String, val age: Int) {
  // Here, the primary constructor is the part of the class definition.
  def greet(): Unit = {
    println(s"Hello, my name is $name and I am $age years old.")
  }
}

// Creating an object using the primary constructor
val person = new Person("Alice", 30)
person.greet()  // Output: Hello, my name is Alice and I am 30 years old.

এখানে name এবং age কনস্ট্রাক্টরের মাধ্যমে ইনপুট নেওয়া হচ্ছে এবং greet() মেথডটি এই ভ্যালুগুলিকে ব্যবহার করছে।

১.২ সহায়ক কনস্ট্রাক্টর (Auxiliary Constructor)

স্কালায় সহায়ক কনস্ট্রাক্টর ফাংশনটি মূল কনস্ট্রাক্টরের বাইরে অতিরিক্ত ইনস্ট্যান্স তৈরি করার জন্য ব্যবহৃত হয়। এটি this কিওয়ার্ড দিয়ে ডিফাইন করা হয়।

উদাহরণ:

class Person(val name: String, val age: Int) {
  // Primary constructor
  def this(name: String) = {
    this(name, 18)  // Calls the primary constructor with a default age of 18
  }

  def greet(): Unit = {
    println(s"Hello, my name is $name and I am $age years old.")
  }
}

// Creating an object using the auxiliary constructor
val person1 = new Person("Bob", 25)
person1.greet()  // Output: Hello, my name is Bob and I am 25 years old.

val person2 = new Person("Charlie")  // Default age will be 18
person2.greet()  // Output: Hello, my name is Charlie and I am 18 years old.

এখানে, সহায়ক কনস্ট্রাক্টর name আর্গুমেন্ট গ্রহণ করে এবং age জন্য একটি ডিফল্ট মান (১৮) অ্যাসাইন করে।


২. ওভারলোডিং (Overloading)

ওভারলোডিং হল একাধিক মেথড বা কনস্ট্রাক্টরের একই নাম দিয়ে ভিন্ন ভিন্ন প্যারামিটার সিগনেচার (সংখ্যা বা টাইপ) ব্যবহার করা। এটি স্কালায় সাধারণভাবে মেথড ওভারলোডিং এবং কনস্ট্রাক্টর ওভারলোডিং হিসাবে দেখা যায়।

২.১ মেথড ওভারলোডিং (Method Overloading)

মেথড ওভারলোডিং হল এক বা একাধিক মেথডের একটি নামের মধ্যে ভিন্ন ভিন্ন প্যারামিটার সিগনেচার ব্যবহার করা। একই নামের মেথডের বিভিন্ন সংস্করণ একই ক্লাসের মধ্যে থাকতে পারে, তবে তাদের আর্গুমেন্টসের সংখ্যা বা টাইপ আলাদা হতে হবে।

উদাহরণ:

class Calculator {
  def add(a: Int, b: Int): Int = {
    a + b
  }

  def add(a: Double, b: Double): Double = {
    a + b
  }
}

val calc = new Calculator
println(calc.add(5, 10))      // Output: 15 (Int addition)
println(calc.add(5.5, 10.2))  // Output: 15.7 (Double addition)

এখানে, add মেথডটি দুটি আলাদা টাইপের প্যারামিটার গ্রহণ করছে: একবার Int এবং অন্যবার Double। তাই এটি মেথড ওভারলোডিং।

২.২ কনস্ট্রাক্টর ওভারলোডিং (Constructor Overloading)

স্কালায় কনস্ট্রাক্টর ওভারলোডিং হল একাধিক কনস্ট্রাক্টর দিয়ে এক বা একাধিক ক্লাসের ইনস্ট্যান্স তৈরি করা, যেখানে কনস্ট্রাক্টরগুলির প্যারামিটার সিগনেচার আলাদা থাকতে পারে।

উদাহরণ:

class Rectangle(val length: Double, val width: Double) {
  // Primary constructor
  def this(length: Double) = {
    this(length, length)  // Creating a square if only one side is provided
  }

  def area(): Double = length * width
}

val rectangle1 = new Rectangle(5, 10)
println(rectangle1.area())  // Output: 50

val square = new Rectangle(4)
println(square.area())  // Output: 16 (Square case, both sides equal)

এখানে, দ্বিতীয় কনস্ট্রাক্টর কেবল একটি মাত্র আর্গুমেন্ট গ্রহণ করে এবং যদি শুধুমাত্র একটি আর্গুমেন্ট প্রদান করা হয় তবে কনস্ট্রাক্টরটি একটি স্কোয়ার তৈরি করবে যেখানে দৈর্ঘ্য এবং প্রস্থ সমান।


সারাংশ

  • কনস্ট্রাক্টর: ক্লাসের ইনস্ট্যান্স তৈরি করার জন্য ব্যবহৃত হয়। স্কালায় প্রধান কনস্ট্রাক্টর (primary constructor) এবং সহায়ক কনস্ট্রাক্টর (auxiliary constructor) দুটো ধরনের কনস্ট্রাক্টর রয়েছে।
  • ওভারলোডিং: স্কালায় মেথড বা কনস্ট্রাক্টরের নাম একই রাখা যায়, তবে তাদের প্যারামিটার সংখ্যা বা টাইপ ভিন্ন থাকতে হবে। এটি মেথড ও কনস্ট্রাক্টর উভয় ক্ষেত্রেই ব্যবহার করা যায়।

কনস্ট্রাক্টর ও ওভারলোডিং স্কালা প্রোগ্রামিংয়ের শক্তিশালী ফিচার, যা কোডের পুনঃব্যবহারযোগ্যতা এবং কার্যকারিতা বাড়ায়।

Content added By
Promotion

Are you sure to start over?

Loading...