CoffeeScript, JavaScript-এর মতোই, ক্লাস এবং অবজেক্ট-ভিত্তিক প্রোগ্রামিং সমর্থন করে। এতে আপনি instance methods এবং static methods ডিফাইন করতে পারেন, যা ক্লাসের ইনস্ট্যান্স বা ক্লাস itself এর সাথে সম্পর্কিত ফাংশনালিটি প্রদান করে। এই দুটি ধরণের মেথড কোডকে আরও সংগঠিত ও কার্যকরী করে তোলে।
১. Instance Methods
Instance methods হল সেই মেথড যেগুলি একটি ক্লাসের ইনস্ট্যান্সের উপর কার্যকরী হয়। প্রতিটি ইনস্ট্যান্সের জন্য আলাদা আলাদা মেথড থাকে।
উদাহরণ: Instance Method তৈরি
class Person
constructor: (@name, @age) ->
greet: ->
console.log "Hello, my name is #{@name} and I am #{@age} years old."
person1 = new Person("Alice", 25)
person1.greet() # "Hello, my name is Alice and I am 25 years old."
এখানে, greet একটি instance method, যা Person ক্লাসের প্রতিটি ইনস্ট্যান্সের সাথে কাজ করে।
JavaScript-এ কম্পাইল হওয়া কোড:
var Person, person1;
Person = (function() {
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.greet = function() {
return console.log("Hello, my name is " + this.name + " and I am " + this.age + " years old.");
};
return Person;
})();
person1 = new Person("Alice", 25);
person1.greet(); // "Hello, my name is Alice and I am 25 years old."
২. Static Methods
Static methods হল সেই মেথড যেগুলি ক্লাসের ইনস্ট্যান্সের উপর নির্ভর করে না, বরং ক্লাসের নিজস্ব অংশ হিসেবে কাজ করে। এই মেথডগুলি ক্লাসের কোন নির্দিষ্ট ইনস্ট্যান্স ছাড়া ব্যবহার করা যায়। এগুলি সাধারণত ক্লাস সম্পর্কিত কাজের জন্য ব্যবহৃত হয়।
উদাহরণ: Static Method তৈরি
class Person
constructor: (@name, @age) ->
greet: ->
console.log "Hello, my name is #{@name} and I am #{@age} years old."
# Static Method
Person.isAdult = (age) ->
age >= 18
console.log Person.isAdult(20) # true
এখানে, isAdult একটি static method, যা Person ক্লাসের কোনো ইনস্ট্যান্স ছাড়াই সরাসরি ক্লাসের মাধ্যমে অ্যাক্সেস করা যায়।
JavaScript-এ কম্পাইল হওয়া কোড:
var Person;
Person = (function() {
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.greet = function() {
return console.log("Hello, my name is " + this.name + " and I am " + this.age + " years old.");
};
// Static Method
Person.isAdult = function(age) {
return age >= 18;
};
return Person;
})();
console.log(Person.isAdult(20)); // true
Instance এবং Static Methods এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Instance Methods | Static Methods |
|---|---|---|
| অ্যাক্সেস পদ্ধতি | ক্লাসের ইনস্ট্যান্স থেকে ব্যবহার করা হয় | ক্লাস থেকে সরাসরি ব্যবহার করা হয় |
this কীওয়ার্ড ব্যবহার | ইনস্ট্যান্সের প্রপার্টি অ্যাক্সেস করতে ব্যবহৃত | ক্লাসের সাথে সম্পর্কিত কাজের জন্য ব্যবহৃত |
| উদাহরণ | greet, updateAge | isAdult, calculateAge |
উদাহরণ: Instance এবং Static Methods একত্রে ব্যবহার
class Car
constructor: (@brand, @model, @year) ->
# Instance Method
getDetails: ->
console.log "Car: #{@brand} #{@model}, Year: #{@year}"
# Static Method
Car.isVintage = (year) ->
currentYear = new Date().getFullYear()
currentYear - year > 20
car1 = new Car("Toyota", "Corolla", 2005)
car1.getDetails() # "Car: Toyota Corolla, Year: 2005"
console.log Car.isVintage(2000) # true
console.log Car.isVintage(2015) # false
JavaScript-এ কম্পাইল হওয়া কোড:
var Car, car1;
Car = (function() {
function Car(brand, model, year) {
this.brand = brand;
this.model = model;
this.year = year;
}
// Instance Method
Car.prototype.getDetails = function() {
return console.log("Car: " + this.brand + " " + this.model + ", Year: " + this.year);
};
// Static Method
Car.isVintage = function(year) {
var currentYear;
currentYear = new Date().getFullYear();
return currentYear - year > 20;
};
return Car;
})();
car1 = new Car("Toyota", "Corolla", 2005);
car1.getDetails(); // "Car: Toyota Corolla, Year: 2005"
console.log(Car.isVintage(2000)); // true
console.log(Car.isVintage(2015)); // false
সারাংশ
- Instance methods ব্যবহার করা হয় ক্লাসের ইনস্ট্যান্সের উপর কার্যকরী মেথড হিসেবে, যা প্রতিটি ইনস্ট্যান্সের জন্য আলাদা থাকে।
- Static methods ব্যবহার করা হয় ক্লাসের নিজস্ব অংশ হিসেবে, এবং এগুলি ক্লাসের ইনস্ট্যান্সের প্রয়োজন ছাড়াই অ্যাক্সেস করা যায়।
- CoffeeScript-এ
->দিয়ে instance method এবংClassName.methodNameদিয়ে static method ডিফাইন করা হয়।
এগুলি CoffeeScript-এ কোডের পাঠযোগ্যতা এবং কার্যকারিতা বাড়ায়, বিশেষত যখন আপনি object-oriented প্রোগ্রামিং স্টাইল ব্যবহার করছেন।
Read more