রুবি প্রোগ্রামিং ভাষায় Attributes (অ্যাট্রিবিউটস) এবং Methods (মেথডস) হল অবজেক্ট ও ক্লাসের মৌলিক উপাদান। এগুলোর মাধ্যমে ডেটা সংরক্ষণ এবং সেই ডেটার উপর কাজ করার পদ্ধতি নির্ধারণ করা হয়। রুবিতে Attributes সাধারণত একটি ক্লাসের ভেরিয়েবল বা বৈশিষ্ট্যকে প্রতিনিধিত্ব করে, এবং Methods সেই ডেটার সাথে কাজ করার পদ্ধতি নির্ধারণ করে।
১. Attributes (অ্যাট্রিবিউটস)
রুবিতে Attributes হল ক্লাসের মধ্যে সংরক্ষিত ভেরিয়েবল যা অবজেক্টের বৈশিষ্ট্য বা ডেটা হিসেবে কাজ করে। এই অ্যাট্রিবিউটসকে সাধারণত instance variables বলা হয় এবং এগুলি একটি অবজেক্টের স্থায়ী ডেটাকে প্রতিনিধিত্ব করে।
১.১ Instance Variables
রুবিতে, একটি ক্লাসের instance variables হল ভেরিয়েবল যা প্রতিটি অবজেক্টের জন্য আলাদা থাকে। এগুলি একটি ক্লাসের অবজেক্টের মধ্যে সংরক্ষিত থাকে এবং @ চিহ্ন দিয়ে চিহ্নিত করা হয়।
class Person
def initialize(name, age)
@name = name # ইনস্ট্যান্স ভেরিয়েবল @name
@age = age # ইনস্ট্যান্স ভেরিয়েবল @age
end
def display_info
puts "Name: #{@name}, Age: #{@age}"
end
end
person = Person.new("আজিজ", 25)
person.display_info # আউটপুট: Name: আজিজ, Age: 25এখানে, @name এবং @age হল ইনস্ট্যান্স ভেরিয়েবল যা অবজেক্টের বৈশিষ্ট্য হিসেবে কাজ করে।
১.২ Class Variables
ক্লাস ভেরিয়েবলগুলি ক্লাসের সমস্ত অবজেক্টের জন্য একক মান ধারণ করে এবং এগুলি @@ চিহ্ন দিয়ে চিহ্নিত করা হয়।
class Person
@@count = 0 # ক্লাস ভেরিয়েবল
def initialize(name, age)
@name = name
@age = age
@@count += 1
end
def self.count
puts "Total persons: #{@@count}"
end
end
person1 = Person.new("আজিজ", 25)
person2 = Person.new("রাহুল", 30)
Person.count # আউটপুট: Total persons: 2এখানে, @@count একটি ক্লাস ভেরিয়েবল, যা সমস্ত অবজেক্টের মধ্যে শেয়ার করা হয়।
২. Methods (মেথডস)
রুবিতে Methods হল কোডের ব্লক যা ক্লাসের ডেটা বা অ্যাট্রিবিউটসের উপর কাজ করে। একটি মেথডকে ব্যবহার করে আপনি অ্যাট্রিবিউটসের মান পরিবর্তন, তাদের প্রক্রিয়া বা আউটপুট প্রদর্শন করতে পারেন।
২.১ Instance Methods
Instance methods হল সেই মেথডগুলি যা একটি অবজেক্টের উপর কাজ করে এবং অবজেক্টের ইনস্ট্যান্স ভেরিয়েবলস ব্যবহার করে।
class Person
def initialize(name, age)
@name = name
@age = age
end
def display_info
puts "Name: #{@name}, Age: #{@age}"
end
end
person = Person.new("আজিজ", 25)
person.display_info # আউটপুট: Name: আজিজ, Age: 25এখানে, display_info একটি ইনস্ট্যান্স মেথড, যা @name এবং @age ভেরিয়েবল ব্যবহার করে অবজেক্টের তথ্য প্রদর্শন করে।
২.২ Class Methods
Class methods হল সেই মেথডগুলি যা ক্লাসের ওপর কাজ করে, নির্দিষ্ট অবজেক্টের ওপর নয়। ক্লাস মেথডগুলিকে self দিয়ে চিহ্নিত করা হয়।
class Person
def self.greet
puts "Hello, welcome to the Person class!"
end
end
Person.greet # আউটপুট: Hello, welcome to the Person class!এখানে, greet হল একটি ক্লাস মেথড, যা ক্লাস Person এর সাথে সম্পর্কিত এবং এর কোনো নির্দিষ্ট ইনস্ট্যান্সের প্রয়োজন নেই।
২.৩ Getter এবং Setter Methods
রুবি ক্লাসের ইনস্ট্যান্স ভেরিয়েবলগুলির মান পেতে এবং সেট করতে getter এবং setter মেথড ব্যবহার করা হয়।
Getter Method:
class Person
def initialize(name, age)
@name = name
@age = age
end
def name
@name # getter method
end
end
person = Person.new("আজিজ", 25)
puts person.name # আউটপুট: আজিজSetter Method:
class Person
def initialize(name, age)
@name = name
@age = age
end
def name=(new_name)
@name = new_name # setter method
end
end
person = Person.new("আজিজ", 25)
person.name = "রাহুল"
puts person.name # আউটপুট: রাহুলএখানে, name এবং name= যথাক্রমে getter এবং setter মেথড।
২.৪ attr_accessor, attr_reader, attr_writer
রুবি একটি সোজা পদ্ধতি প্রদান করে attr_accessor, attr_reader, এবং attr_writer এর মাধ্যমে getter এবং setter মেথড স্বয়ংক্রিয়ভাবে তৈরি করতে।
class Person
attr_accessor :name, :age # Creates both getter and setter for :name and :age
end
person = Person.new
person.name = "আজিজ"
person.age = 25
puts person.name # আউটপুট: আজিজ
puts person.age # আউটপুট: 25এখানে, attr_accessor স্বয়ংক্রিয়ভাবে name এবং age এর জন্য getter এবং setter মেথড তৈরি করেছে।
৩. Attributes এবং Methods এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Attributes (অ্যাট্রিবিউটস) | Methods (মেথডস) |
|---|---|---|
| সংজ্ঞা | ক্লাস বা অবজেক্টের ডেটা বা বৈশিষ্ট্য। | একটি কোডের ব্লক যা ডেটার উপর কাজ করে। |
| লক্ষ্য | অবজেক্টের ডেটা সংরক্ষণ। | অবজেক্টের ডেটা বা অ্যাট্রিবিউটসের উপর অপারেশন সম্পাদন। |
| অপারেটর | @ চিহ্ন দিয়ে চিহ্নিত করা হয়। | def এবং end দিয়ে সংজ্ঞায়িত করা হয়। |
| পাঠযোগ্যতা | সাধারণত রিড-অনলি বা রাইট-অনলি। | সাধারণত অ্যাট্রিবিউটসের মান পরিবর্তন বা ফলাফল প্রদান করতে ব্যবহৃত। |
| প্রকার | ইনস্ট্যান্স ভেরিয়েবল বা ক্লাস ভেরিয়েবল হতে পারে। | ইনস্ট্যান্স মেথড বা ক্লাস মেথড হতে পারে। |
সারসংক্ষেপ
- Attributes (অ্যাট্রিবিউটস) হল একটি ক্লাসের ডেটা বা বৈশিষ্ট্য যা ইনস্ট্যান্স ভেরিয়েবল দ্বারা সংরক্ষিত হয়। এটি ক্লাস বা অবজেক্টের অবস্থা বা চরিত্র প্রদর্শন করে।
- Methods (মেথডস) হল কোডের ব্লক যা ডেটার উপর কার্যকরী কাজ করে। মেথডগুলি ক্লাসের ফাংশনালিটি নির্ধারণ করে।
- রুবিতে getter এবং setter মেথড ব্যবহার করে আপনি অ্যাট্রিবিউটের মান পেতে এবং সেট করতে পারেন, অথবা
attr_accessor,attr_reader,attr_writerব্যবহার করে স্বয়ংক্রিয়ভাবে মেথড তৈরি করতে পারেন।
Read more