Computer Programming Modules এবং Namespaces এর ব্যবহার গাইড ও নোট

270

Modules এবং Namespaces রুবি প্রোগ্রামিং ভাষায় কোডের সংগঠন এবং পুনঃব্যবহারযোগ্যতার জন্য অত্যন্ত গুরুত্বপূর্ণ ধারণা। এগুলি কোডের পুনঃব্যবহারযোগ্য অংশ তৈরি করতে সাহায্য করে এবং একই নামের দ্বন্দ্ব (name clash) এড়াতে ব্যবহৃত হয়।


১. Modules

Modules হল কোডের পুনঃব্যবহারযোগ্য ব্লক যা methods, constants, এবং class গুলো ধারণ করতে পারে। রুবিতে, modules সাধারণত mixins (মেথড ভাগ করা) এবং namespaces (নাম সংরক্ষণ) তৈরির জন্য ব্যবহৃত হয়।

১.১ Modules এর ব্যবহার

  • Method Grouping: আপনি একটি মডিউল তৈরি করতে পারেন এবং তার মধ্যে একাধিক মেথড সংজ্ঞায়িত করতে পারেন। পরে আপনি সেই মডিউলকে ক্লাসে অন্তর্ভুক্ত করতে পারেন।
  • Namespaces: মডিউলগুলি একই নামের দ্বন্দ্ব (name clash) এড়াতে সাহায্য করে, যেমন একাধিক ক্লাস বা মেথডের মধ্যে একই নাম থাকতে পারে।

১.২ Module Definition এবং Inclusion

মডিউল তৈরি করতে module কিওয়ার্ড ব্যবহার করা হয়। ক্লাসে মডিউল ইনক্লুড করতে include কিওয়ার্ড ব্যবহার করা হয়।

module Greet
  def say_hello
    puts "Hello!"
  end
end

class Person
  include Greet  # মডিউল ইনক্লুড করা হলো
end

person = Person.new
person.say_hello  # আউটপুট: Hello!

এখানে, Greet মডিউলে একটি মেথড say_hello সংজ্ঞায়িত করা হয়েছে এবং Person ক্লাসে include Greet দিয়ে মডিউলটি অন্তর্ভুক্ত করা হয়েছে।

১.৩ Module Constants

মডিউলে আপনি কনস্ট্যান্টও সংজ্ঞায়িত করতে পারেন।

module Constants
  PI = 3.14159
end

puts Constants::PI  # আউটপুট: 3.14159

এখানে, Constants মডিউলে PI কনস্ট্যান্ট সংজ্ঞায়িত করা হয়েছে এবং মডিউলের নাম সহ কনস্ট্যান্টটি অ্যাক্সেস করা হয়েছে।


২. Namespaces

Namespaces হল একটি ধারণা যার মাধ্যমে একই নামের বিভিন্ন ক্লাস, মেথড, বা কনস্ট্যান্টকে আলাদা করা হয়। রুবিতে, মডিউলগুলি সাধারণত namespace হিসেবে কাজ করে, যা ক্লাস বা মেথডের নামের দ্বন্দ্ব (name clash) থেকে রক্ষা করে।

২.১ Namespace ব্যবহার

একটি মডিউল ব্যবহার করে আপনি নামের দ্বন্দ্ব এড়াতে পারেন, যাতে একই নামের ক্লাসগুলি আলাদা রাখা যায়।

module Animal
  class Dog
    def speak
      puts "Woof!"
    end
  end
end

module Bird
  class Dog
    def speak
      puts "Tweet!"
    end
  end
end

dog1 = Animal::Dog.new
dog1.speak  # আউটপুট: Woof!

dog2 = Bird::Dog.new
dog2.speak  # আউটপুট: Tweet!

এখানে, Animal এবং Bird মডিউলগুলি আলাদা namespace হিসেবে কাজ করেছে, এবং দুটিই Dog নামক ক্লাসের মধ্যে ভিন্ন আচরণ প্রদান করেছে।

২.২ Namespace এবং Constant

নামস্থানের (namespace) মাধ্যমে কনস্ট্যান্টের নামের দ্বন্দ্বও এড়ানো যায়।

module MathConstants
  PI = 3.14159
end

module PhysicsConstants
  PI = 3.14
end

puts MathConstants::PI  # আউটপুট: 3.14159
puts PhysicsConstants::PI  # আউটপুট: 3.14

এখানে, MathConstants এবং PhysicsConstants মডিউল দুটি আলাদা নামস্থানের (namespace) মতো কাজ করেছে এবং প্রতিটির PI কনস্ট্যান্ট ভিন্ন মান ধারণ করছে।


৩. Module as Mixins

রুবিতে Mixins হল এমন একটি কৌশল যা মডিউলের মাধ্যমে একটি ক্লাসে বিভিন্ন মেথড বা বৈশিষ্ট্য যোগ করতে সহায়তা করে। মডিউলগুলি একটি ক্লাসের মধ্যে ভিন্ন ভিন্ন বৈশিষ্ট্য বা ফাংশনালিটি যুক্ত করার জন্য ব্যবহৃত হয়, যা বহুলভাবে ব্যবহৃত হয়।

৩.১ Example of Mixins

module Swim
  def swim
    puts "Swimming"
  end
end

module Fly
  def fly
    puts "Flying"
  end
end

class Duck
  include Swim
  include Fly
end

duck = Duck.new
duck.swim  # আউটপুট: Swimming
duck.fly   # আউটপুট: Flying

এখানে, Swim এবং Fly মডিউল দুটি ক্লাস Duck এ মিক্সিন হিসেবে অন্তর্ভুক্ত করা হয়েছে, এবং সেই অনুযায়ী Duck ক্লাসে দুইটি নতুন মেথড যোগ করা হয়েছে।


৪. Module Method (Module Method)

রুবি মডিউলগুলির মধ্যে মেথড সংজ্ঞায়িত করতে self ব্যবহার করা হয়, যাকে "module method" বলা হয়। এই মেথডগুলি ক্লাসের কোনো ইনস্ট্যান্সের মাধ্যমে নয়, সরাসরি মডিউল থেকে কল করা হয়।

module Calculator
  def self.add(a, b)
    a + b
  end
end

puts Calculator.add(5, 3)  # আউটপুট: 8

এখানে, Calculator মডিউলে self.add মেথড ব্যবহার করা হয়েছে, যা ক্লাসের ইনস্ট্যান্স ছাড়া সরাসরি মডিউল থেকেই কল করা হয়েছে।


সারসংক্ষেপ

  • Modules: কোডের পুনঃব্যবহারযোগ্য অংশ তৈরি করার জন্য ব্যবহৃত হয়, যা মেথড, কনস্ট্যান্ট, বা ক্লাস ধারণ করতে পারে।
  • Namespaces: নামের দ্বন্দ্ব এড়াতে মডিউল ব্যবহার করে একাধিক ক্লাস বা কনস্ট্যান্ট আলাদা রাখা যায়।
  • Mixins: মডিউলগুলি ক্লাসে একাধিক ফাংশনালিটি যুক্ত করার জন্য ব্যবহৃত হয়।
  • Module Method: মডিউলগুলিতে self ব্যবহার করে মেথড তৈরি করা হয়, যা মডিউল থেকে সরাসরি কল করা যায়।

মডিউল এবং নেমস্পেস রুবির কোড সংগঠনকে আরও পরিষ্কার, পুনঃব্যবহারযোগ্য এবং নামের দ্বন্দ্ব থেকে মুক্ত রাখতে সাহায্য করে।

Content added By
Promotion

Are you sure to start over?

Loading...