Constructors এবং Destructors গাইড ও নোট

Computer Programming - রুবি প্রোগ্রামিং (Ruby Programming) - Object-Oriented Programming (অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং)
275

Constructors এবং Destructors হল Object-Oriented Programming (OOP)-এ ব্যবহৃত গুরুত্বপূর্ণ ধারণা, যা অবজেক্টের জীবনচক্র (lifecycle) পরিচালনা করে। রুবি ভাষায়, Constructors এবং Destructors দুটি ধারণা কার্যকরভাবে ব্যবহৃত হয় ক্লাসের ইনস্ট্যান্স তৈরি (অবজেক্ট নির্মাণ) এবং অবজেক্ট ধ্বংসের সময়।

রুবি ভাষায় Constructors এবং Destructors এর কাজ এবং ব্যবহার ভিন্নভাবে পরিচালিত হয়।


১. Constructors in Ruby (কনস্ট্রাকটর)

একটি Constructor হল একটি বিশেষ মেথড যা অবজেক্টের ইনস্ট্যান্স তৈরি করার সময় স্বয়ংক্রিয়ভাবে কল হয়। এটি ক্লাসের প্রতিটি নতুন অবজেক্ট তৈরি হওয়ার সময় ইনিশিয়ালাইজেশন প্রক্রিয়া পরিচালনা করে।

রুবি ভাষায়, constructor হিসেবে initialize মেথড ব্যবহৃত হয়। এটি ক্লাসের কোন ইনস্ট্যান্স তৈরি হওয়ার সাথে সাথে কল হয় এবং প্রয়োজনীয় ডেটা বা স্টেট ইনিশিয়ালাইজ করে।

Syntax:

class ClassName
  def initialize(parameters)
    # Constructor code (object initialization)
  end
end

উদাহরণ:

class Person
  def initialize(name, age)
    @name = name  # instance variable
    @age = age    # instance variable
  end

  def greet
    puts "Hello, my name is #{@name} and I am #{@age} years old."
  end
end

# Creating an instance (object) of the Person class
person = Person.new("John", 30)
person.greet  # Output: Hello, my name is John and I am 30 years old.

এখানে, initialize মেথডটি constructor হিসেবে কাজ করছে। যখন Person.new("John", 30) কল করা হয়, তখন initialize মেথডটি স্বয়ংক্রিয়ভাবে কল হয় এবং অবজেক্টের অবস্থা ইনিশিয়ালাইজ করে।

initialize মেথডের বিশেষ বৈশিষ্ট্য:

  • এটি শুধুমাত্র একটি ক্লাসের ইনস্ট্যান্স তৈরি করার সময় কল হয়।
  • initialize মেথডের প্যারামিটার হিসেবে কোনো ভ্যালু পাস করা যেতে পারে, যা অবজেক্টের স্টেট বা প্রপার্টি সেট করতে ব্যবহৃত হয়।
  • initialize মেথডের মাধ্যমে অবজেক্টের instance variables (যেমন @name, @age) সেট করা হয়।

২. Destructors in Ruby (ডেস্ট্রাকটর)

একটি Destructor হল একটি বিশেষ মেথড যা একটি অবজেক্ট ধ্বংস বা মেমরি ফ্রি করার সময় কল হয়। তবে, রুবি ভাষায় explicit destructor (যেমন অন্যান্য ভাষায় destroy বা finalize মেথড থাকে) ব্যবহৃত হয় না, কারণ রুবি garbage collection মেকানিজম ব্যবহার করে। এর মাধ্যমে, অবজেক্টের মেমরি মুক্তি এবং অবজেক্ট ধ্বংস স্বয়ংক্রিয়ভাবে পরিচালিত হয়।

রুবি ভাষায় মেমরি ব্যবস্থাপনা এবং অবজেক্ট ধ্বংসের জন্য finalize মেথডের ধারণা রয়েছে, তবে এটি খুব কম ব্যবহৃত হয় এবং সাধারণত ব্যবহারকারী নিজে তেমন কিছু করতে হয় না।

Garbage Collection:

রুবি garbage collector (GC) ব্যবহার করে অবজেক্টের জীবনের শেষে অপ্রয়োজনীয় মেমরি বা অবজেক্টগুলিকে মুছে ফেলে, যা প্রোগ্রামের মেমরি ব্যবস্থাপনা সহজ করে তোলে।

finalize মেথড উদাহরণ:

রুবিতে ObjectSpace.define_finalizer ব্যবহার করে আপনি একটি ফাইনালাইজার বা ডেস্ট্রাকটর যুক্ত করতে পারেন, যা অবজেক্ট ধ্বংস হওয়ার সময় কোনো নির্দিষ্ট কোড চালাবে।

class Resource
  def initialize
    puts "Resource initialized"
  end

  def finalize
    puts "Resource is being finalized"
  end
end

resource = Resource.new
ObjectSpace.define_finalizer(resource, resource.method(:finalize).to_proc)

এখানে, যখন resource অবজেক্টটি ধ্বংস হবে, তখন finalize মেথডটি স্বয়ংক্রিয়ভাবে কল হবে। তবে, এটা সবার জন্য প্রয়োজনীয় নয়, কারণ রুবি এরকম কাজ করতে গার্বেজ কালেকশন ব্যবহার করে।


৩. Difference between Constructor and Destructor in Ruby

বৈশিষ্ট্যConstructorDestructor
কাজঅবজেক্ট ইনিশিয়ালাইজেশন বা প্রস্তুত করার জন্যঅবজেক্টের জীবনের শেষের দিকে কোনো এক্সট্রা ক্লিনআপ কার্যক্রম সম্পাদন করা
কল হয়initialize মেথড কল হয় অবজেক্ট তৈরি হওয়ার সময়রুবিতে কোনো explicit destructor নেই, garbage collection দ্বারা স্বয়ংক্রিয়ভাবে ক্লিনআপ করা হয়
ব্যবহারঅবজেক্টের প্রপার্টি বা স্টেট ইনিশিয়ালাইজ করতে ব্যবহৃত হয়Garbage collector ব্যবহার করে মেমরি ম্যানেজমেন্ট সিস্টেমে অবজেক্ট ধ্বংস হয়
মেথড নামinitializeসাধারণত finalize (Garbage collection ব্যবহৃত হলে)

সারসংক্ষেপ

  • Constructors (initialize মেথড) রুবিতে অবজেক্ট তৈরি করার সময় স্বয়ংক্রিয়ভাবে কল হয় এবং এটি অবজেক্টের স্টেট ইনিশিয়ালাইজ করে।
  • Destructors রুবিতে সরাসরি ব্যবহৃত না হলেও, garbage collection ব্যবস্থাপনা দ্বারা অবজেক্টের মেমরি মুক্ত করে।
  • finalize মেথড ব্যবহার করে আপনি অবজেক্টের ধ্বংসের সময় ক্লিনআপ বা বিশেষ কার্যক্রম করতে পারেন, তবে এটি প্রাকৃতিকভাবে প্রয়োগ করা হয় না এবং গার্বেজ কালেকশনের মাধ্যমে কাজ হয়।

রুবি প্রোগ্রামিং ভাষায় constructors এবং destructors এর ব্যবহার অবজেক্টের জীবনচক্র নিয়ন্ত্রণে সহায়ক, এবং রুবি এর মেমরি ব্যবস্থাপনা ও গার্বেজ কালেকশন ব্যবস্থার মাধ্যমে বেশিরভাগ কাজ স্বয়ংক্রিয়ভাবে সম্পন্ন করে।

Content added By
Promotion

Are you sure to start over?

Loading...