CoffeeScript একটি উচ্চ স্তরের প্রোগ্রামিং ভাষা যা JavaScript-এর উপর ভিত্তি করে তৈরি, এবং এটি JavaScript-এর ক্লাস এবং অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP) ধারণাগুলোর সমর্থন করে। CoffeeScript-এ ক্লাস এবং অবজেক্ট তৈরি করা অত্যন্ত সহজ এবং সংক্ষিপ্ত, যা OOP ধারণাগুলোর বাস্তবায়নকে আরও সহজ করে তোলে।
ক্লাস (Class)
CoffeeScript-এ ক্লাস ডিফাইন করা হয় class কিওয়ার্ড ব্যবহার করে। এটি JavaScript-এর class এর মতোই কাজ করে, তবে কোড আরও সংক্ষিপ্ত এবং পরিষ্কার হয়।
ক্লাস ডিফাইন করা:
class Person
constructor: (@name, @age) -> # constructor ব্যবহার করে প্যারামিটার গ্রহণ
greet: -> console.log "Hello, my name is #{@name} and I am #{@age} years old."
এখানে Person ক্লাসটি একটি অবজেক্ট তৈরি করতে ব্যবহৃত হবে, এবং constructor মেথডটি অবজেক্টের name এবং age প্রোপার্টি ইনিশিয়ালাইজ করবে। greet মেথডটি ব্যক্তি সম্পর্কে একটি মেসেজ প্রিন্ট করবে।
JavaScript-এ কম্পাইল হওয়া কোড:
var Person;
Person = class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
return console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
}
};
অবজেক্ট (Object)
CoffeeScript-এ একটি অবজেক্ট তৈরি করা খুব সহজ। আপনি একটি ক্লাস ডিফাইন করার পর তা ব্যবহার করে অবজেক্ট তৈরি করতে পারেন।
ক্লাস ব্যবহার করে অবজেক্ট তৈরি:
person1 = new Person("Alice", 30)
person1.greet() # "Hello, my name is Alice and I am 30 years old."
এখানে person1 একটি নতুন Person ক্লাসের অবজেক্ট, এবং greet মেথডটি এটি কল করে।
JavaScript-এ কম্পাইল হওয়া কোড:
var person1;
person1 = new Person("Alice", 30);
person1.greet(); // "Hello, my name is Alice and I am 30 years old."
ইনহেরিটেন্স (Inheritance)
CoffeeScript-এ ইনহেরিটেন্স সহজেই তৈরি করা যায়। আপনি একটি ক্লাসকে অন্য একটি ক্লাস থেকে ইনহেরিট করতে পারেন। এটি কোড পুনঃব্যবহারযোগ্যতা বাড়ায়।
ইনহেরিটেন্স উদাহরণ:
class Animal
constructor: (@name) ->
speak: -> console.log "#{@name} makes a noise."
class Dog extends Animal # Dog ক্লাস Animal থেকে ইনহেরিট করছে
speak: -> console.log "#{@name} barks."
dog = new Dog("Buddy")
dog.speak() # "Buddy barks."
এখানে, Dog ক্লাসটি Animal ক্লাস থেকে ইনহেরিট করেছে এবং speak মেথডটিকে ওভাররাইড করেছে।
JavaScript-এ কম্পাইল হওয়া কোড:
var Animal, Dog;
Animal = class Animal {
constructor(name) {
this.name = name;
}
speak() {
return console.log(`${this.name} makes a noise.`);
}
};
Dog = class Dog extends Animal {
speak() {
return console.log(`${this.name} barks.`);
}
};
var dog;
dog = new Dog("Buddy");
dog.speak(); // "Buddy barks."
প্রাইভেট এবং পাবলিক মেম্বার
CoffeeScript-এ, আপনি সহজেই ক্লাসের মেম্বারগুলি পাবলিক এবং প্রাইভেট করতে পারেন। তবে, CoffeeScript সরাসরি প্রাইভেট ভেরিয়েবল তৈরি করার জন্য কোনও কিওয়ার্ড দেয় না, তবে আপনি @ সাইন ব্যবহার করে এটি সিমুলেট করতে পারেন।
প্রাইভেট মেম্বার:
class Circle
radius = 5 # প্রাইভেট মেম্বার
getArea: -> Math.PI * radius * radius
এখানে radius একটি প্রাইভেট মেম্বার, এবং শুধুমাত্র getArea মেথডে এটি অ্যাক্সেস করা হচ্ছে।
সারাংশ
CoffeeScript-এ অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP) ধারণাগুলি ব্যবহার করা সহজ এবং কোড লেখা আরও পরিষ্কার এবং সংক্ষিপ্ত হয়। CoffeeScript-এ ক্লাস এবং অবজেক্ট তৈরি করা খুবই সহজ এবং JavaScript-এ রূপান্তরিত হওয়ার পরও তা কার্যকরী থাকে। আপনি সহজেই ইনহেরিটেন্স, মেথড, এবং পাবলিক/প্রাইভেট মেম্বার পরিচালনা করতে পারেন। CoffeeScript-এ OOP ধারণাগুলির ব্যবহার JavaScript কোডের তুলনায় আরও মসৃণ এবং দ্রুত হয়।
CoffeeScript-এ ক্লাস তৈরি করা এবং কনস্ট্রাক্টর ব্যবহার করা JavaScript-এর তুলনায় অনেক সহজ ও পরিষ্কার। CoffeeScript ক্লাস সিনট্যাক্সের মাধ্যমে আপনি সহজেই অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) কনসেপ্ট ব্যবহার করতে পারেন। এখানে ক্লাস তৈরি এবং কনস্ট্রাক্টর ব্যবহারের সম্পূর্ণ প্রক্রিয়া আলোচনা করা হয়েছে।
CoffeeScript-এ ক্লাস তৈরি
CoffeeScript-এ ক্লাস তৈরি করতে class কিওয়ার্ড ব্যবহার করা হয়, এবং ক্লাসের মধ্যে মেথড ডিফাইন করার জন্য @ ব্যবহার করা হয়। এই সিনট্যাক্স JavaScript ক্লাসের তুলনায় আরও পরিষ্কার এবং সংক্ষিপ্ত।
উদাহরণ: ক্লাস তৈরি
class Person
constructor: (@name, @age) -> # কনস্ট্রাক্টর
sayHello: ->
console.log "Hello, my name is #{@name} and I am #{@age} years old."
এই কোডে:
classদিয়ে একটি ক্লাস তৈরি করা হয়েছে।constructor:কনস্ট্রাক্টর মেথড ডিফাইন করা হয়েছে যা অবজেক্ট তৈরি করার সময় কিছু প্রপার্টি অ্যাসাইন করবে।@ব্যবহার করে ক্লাসের প্রপার্টি বা মেথড ডিফাইন করা হয়েছে (যা JavaScript-এthisহিসাবে কাজ করবে)।
কনস্ট্রাক্টর (Constructor) ব্যবহার
CoffeeScript-এ কনস্ট্রাক্টর constructor: দিয়ে ডিফাইন করা হয়। এই কনস্ট্রাক্টর ফাংশনটি অবজেক্টের প্রপার্টি সেট করতে ব্যবহৃত হয় যখন একটি নতুন অবজেক্ট তৈরি করা হয়।
উদাহরণ: কনস্ট্রাক্টর ব্যবহার
class Person
constructor: (@name, @age) -> # কনস্ট্রাক্টর
sayHello: ->
console.log "Hello, my name is #{@name} and I am #{@age} years old."
person1 = new Person("Alice", 30) # অবজেক্ট তৈরি
person1.sayHello() # Hello, my name is Alice and I am 30 years old.
এখানে:
@nameএবং@ageকনস্ট্রাক্টর ফাংশনের মাধ্যমে প্রপার্টি হিসেবে সেট করা হয়েছে।new Person("Alice", 30)এর মাধ্যমে একটি নতুন অবজেক্ট তৈরি করা হয়েছে এবং কনস্ট্রাক্টরের মান পাস করা হয়েছে।
JavaScript-এ কম্পাইল হওয়া কোড:
var Person;
Person = (function() {
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHello = function() {
return console.log("Hello, my name is " + this.name + " and I am " + this.age + " years old.");
};
return Person;
})();
CoffeeScript-এ ক্লাস ইনহেরিটেন্স (Inheritance)
CoffeeScript-এ ক্লাস ইনহেরিটেন্স খুব সহজে করা যায়। একটি ক্লাস অন্য ক্লাস থেকে মেথড এবং প্রপার্টি ইনহেরিট করতে পারে।
উদাহরণ: ক্লাস ইনহেরিটেন্স
class Animal
constructor: (@name) ->
speak: ->
console.log "#{@name} makes a noise."
class Dog extends Animal
speak: ->
console.log "#{@name} barks."
dog = new Dog("Rex")
dog.speak() # Rex barks.
এখানে:
Animalক্লাসটি একটি সাধারণ ক্লাস, যা একটিspeakমেথড ধারণ করে।Dogক্লাসটিAnimalক্লাস থেকে ইনহেরিট করেছে এবং তার নিজেরspeakমেথড পুনরায় সংজ্ঞায়িত করেছে।
JavaScript-এ কম্পাইল হওয়া কোড:
var Animal, Dog;
Animal = (function() {
function Animal(name) {
this.name = name;
}
Animal.prototype.speak = function() {
return console.log(this.name + " makes a noise.");
};
return Animal;
})();
Dog = (function() {
__extends(Dog, Animal);
function Dog(name) {
Dog.__super__.constructor.call(this, name);
}
Dog.prototype.speak = function() {
return console.log(this.name + " barks.");
};
return Dog;
})();
CoffeeScript-এ স্ট্যাটিক মেথড (Static Methods)
CoffeeScript-এ ক্লাসের মধ্যে স্ট্যাটিক মেথডও তৈরি করা যায়। স্ট্যাটিক মেথড ক্লাসের নাম দিয়ে ডাকা হয়, অবজেক্টের মাধ্যমে নয়।
উদাহরণ: স্ট্যাটিক মেথড
class Calculator
add: (a, b) -> a + b
subtract: (a, b) -> a - b
multiply: (a, b) -> a * b
divide: (a, b) -> a / b
static calculateArea: (length, width) -> length * width
এখানে, calculateArea একটি স্ট্যাটিক মেথড যা Calculator ক্লাসের নাম দিয়ে কল করা যেতে পারে, অবজেক্টের মাধ্যমে নয়।
ব্যবহার:
area = Calculator.calculateArea(10, 5)
console.log area # 50
JavaScript-এ কম্পাইল হওয়া কোড:
var Calculator;
Calculator = (function() {
function Calculator() {}
Calculator.prototype.add = function(a, b) {
return a + b;
};
Calculator.prototype.subtract = function(a, b) {
return a - b;
};
Calculator.prototype.multiply = function(a, b) {
return a * b;
};
Calculator.prototype.divide = function(a, b) {
return a / b;
};
Calculator.calculateArea = function(length, width) {
return length * width;
};
return Calculator;
})();
সারাংশ
CoffeeScript-এ ক্লাস তৈরি এবং কনস্ট্রাক্টর ব্যবহার করা খুবই সহজ। class কিওয়ার্ড দিয়ে ক্লাস তৈরি করা হয়, এবং constructor: দিয়ে ক্লাসের কনস্ট্রাক্টর ডিফাইন করা হয়। CoffeeScript-এ ক্লাসের মধ্যে @ ব্যবহার করে প্রপার্টি এবং মেথড ডিফাইন করা হয়। CoffeeScript JavaScript-এর তুলনায় আরও পরিষ্কার এবং সংক্ষিপ্ত কোড লেখার সুযোগ দেয়, এবং এটি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর জন্য একটি দুর্দান্ত উপায়।
CoffeeScript-এ ইনহেরিটেন্স (Inheritance) এবং সাবক্লাসিং (Subclassing) সহজ এবং পরিষ্কারভাবে ব্যবহার করা যায়। এটি JavaScript-এর ক্লাস সিস্টেমের উপরে ভিত্তি করে এবং ES6-এর ক্লাস ফিচারের মতোই কাজ করে, তবে CoffeeScript-এ এটি আরও সংক্ষিপ্ত এবং ব্যবহারযোগ্য। এখানে CoffeeScript-এ ইনহেরিটেন্স এবং সাবক্লাসিং কীভাবে কাজ করে তা বিস্তারিতভাবে আলোচনা করা হলো।
CoffeeScript-এ Inheritance (ইনহেরিটেন্স)
CoffeeScript-এ ক্লাস তৈরি করা এবং ইনহেরিটেন্স ব্যবহার করা খুবই সহজ। CoffeeScript class কীওয়ার্ড ব্যবহার করে ক্লাস তৈরি করতে এবং ক্লাসের মধ্যে ইনহেরিটেন্স (parent-child relationship) সেটআপ করতে সাহায্য করে।
১. বেস ক্লাস (Base Class) তৈরি করা
প্রথমে একটি বেস ক্লাস (Parent Class) তৈরি করা হয়, যা সাধারণ বৈশিষ্ট্য এবং পদ্ধতি (methods) ধারণ করে।
class Animal
constructor: (@name) -> # ডিফল্ট কন্সট্রাক্টর
speak: -> console.log "#{@name} makes a noise."
এখানে Animal একটি বেস ক্লাস, যার মধ্যে একটি কন্সট্রাক্টর এবং একটি speak মেথড রয়েছে।
২. সাবক্লাস (Subclass) তৈরি করা
সাবক্লাস তৈরি করতে CoffeeScript-এ extends ব্যবহার করা হয়। এটি বেস ক্লাসের সকল বৈশিষ্ট্য এবং পদ্ধতি সাবক্লাসে অ্যাক্সেস করতে সাহায্য করে।
class Dog extends Animal
speak: -> console.log "#{@name} barks."
এখানে Dog ক্লাস Animal ক্লাসকে extends করে ইনহেরিট করেছে এবং speak মেথডকে কাস্টমাইজ করেছে।
৩. ইনস্ট্যান্স তৈরি করা
এখন আপনি Animal এবং Dog ক্লাসের ইনস্ট্যান্স তৈরি করতে পারবেন:
dog = new Dog("Buddy")
dog.speak() # Buddy barks.
JavaScript-এ কম্পাইল হওয়া কোড:
var Animal, Dog;
Animal = class {
constructor(name) {
this.name = name;
}
speak() {
return console.log(`${this.name} makes a noise.`);
}
};
Dog = class extends Animal {
speak() {
return console.log(`${this.name} barks.`);
}
};
var dog;
dog = new Dog("Buddy");
dog.speak(); // Buddy barks.
CoffeeScript-এ Super (সুপার) ব্যবহার
কখনও কখনও আপনি সাবক্লাসে বেস ক্লাসের মেথডও কল করতে চাইবেন। এর জন্য CoffeeScript-এ super কীওয়ার্ড ব্যবহার করা হয়।
উদাহরণ: সুপার মেথড কল করা
class Dog extends Animal
speak: ->
super() # বেস ক্লাসের speak মেথড কল করা হচ্ছে
console.log "#{@name} barks."
এখানে super() বেস ক্লাসের speak মেথডকে কল করবে, এবং তারপর সাবক্লাসের কাস্টম speak মেথড এক্সিকিউট হবে।
JavaScript-এ কম্পাইল হওয়া কোড:
var Animal, Dog;
Animal = class {
constructor(name) {
this.name = name;
}
speak() {
return console.log(`${this.name} makes a noise.`);
}
};
Dog = class extends Animal {
speak() {
super.speak();
return console.log(`${this.name} barks.`);
}
};
var dog;
dog = new Dog("Buddy");
dog.speak(); // Buddy makes a noise. Buddy barks.
CoffeeScript-এ Multiple Inheritance (একাধিক ইনহেরিটেন্স)
CoffeeScript নিজে একাধিক ইনহেরিটেন্স সমর্থন করে না, তবে আপনি মিশ্রিত বা ম্যানুয়ালি একাধিক ক্লাসের বৈশিষ্ট্য ব্যবহার করতে পারেন।
উদাহরণ: মিক্সিন ব্যবহার
class Animal
constructor: (@name) ->
speak: -> console.log "#{@name} makes a noise."
class Swimmer
swim: -> console.log "#{@name} swims."
class Fish extends Animal
include Swimmer
constructor: (@name) -> super(@name)
এখানে Fish ক্লাস Animal এবং Swimmer দুটি ক্লাস থেকে বৈশিষ্ট্য ইনহেরিট করেছে।
JavaScript-এ কম্পাইল হওয়া কোড:
var Animal, Fish, Swimmer;
Animal = class {
constructor(name) {
this.name = name;
}
speak() {
return console.log(`${this.name} makes a noise.`);
}
};
Swimmer = class {
swim() {
return console.log(`${this.name} swims.`);
}
};
Fish = class extends Animal {
constructor(name) {
super(name);
}
};
Object.assign(Fish.prototype, Swimmer.prototype);
var fish;
fish = new Fish("Goldfish");
fish.speak(); // Goldfish makes a noise.
fish.swim(); // Goldfish swims.
সারাংশ
CoffeeScript-এ ইনহেরিটেন্স এবং সাবক্লাসিং অনেক সহজ এবং পরিষ্কার। আপনি class এবং extends ব্যবহার করে ক্লাস তৈরি করতে এবং ইনহেরিটেন্স তৈরি করতে পারেন। super কীওয়ার্ড ব্যবহার করে আপনি বেস ক্লাসের মেথডও কল করতে পারেন। এতে কোড আরও সুন্দর এবং আরও দ্রুত লেখা যায়, এবং JavaScript কোডের তুলনায় খুব কম কোডে একই কাজ করা সম্ভব। CoffeeScript ইনহেরিটেন্স ডেভেলপারদের আরও কার্যকরী এবং পাঠযোগ্য কোড লেখার সুযোগ দেয়।
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 প্রোগ্রামিং স্টাইল ব্যবহার করছেন।
CoffeeScript-এ Private Variables এবং Methods ব্যবহারের জন্য JavaScript-এর ক্লাস সিনট্যাক্স অনুসরণ করা হয়। তবে CoffeeScript সিনট্যাক্সে কিছু সহজ এবং পাঠযোগ্য পদ্ধতি রয়েছে যা এই কাজটি আরও কার্যকরী এবং পরিষ্কার করে তোলে। এখানে CoffeeScript-এ প্রাইভেট ভেরিয়েবল এবং মেথড তৈরি এবং ব্যবহারের পদ্ধতি ব্যাখ্যা করা হয়েছে।
প্রাইভেট ভেরিয়েবল এবং মেথড কী?
Private Variables এবং Private Methods ক্লাসের বাইরের জায়গা থেকে অ্যাক্সেসযোগ্য নয়। অর্থাৎ, এগুলি শুধু ক্লাসের ভিতরে ব্যবহার করা যায়, বাইরে থেকে এগুলিতে প্রবেশ করা সম্ভব নয়। JavaScript-এ সাধারণত প্রাইভেট ভেরিয়েবলগুলি # চিহ্ন ব্যবহার করে চিহ্নিত করা হয় (এটি ES2022-এর পরে JavaScript-এ অন্তর্ভুক্ত হয়েছে)। CoffeeScript-এও একই পদ্ধতি ব্যবহার করা হয়।
CoffeeScript-এ Private Variables এবং Methods তৈরি করা
১. Private Variables
CoffeeScript-এ @ ব্যবহার করে প্রাইভেট ভেরিয়েবল তৈরি করা হয়, তবে প্রাইভেট ভেরিয়েবল ব্যবহারের জন্য CoffeeScript-এ JavaScript-এর মতো সরাসরি কোনো প্রকৃত সিনট্যাক্স নেই। CoffeeScript ক্লাসের মধ্যে একটি বিশেষ কৌশল ব্যবহার করে প্রাইভেট ভেরিয়েবল তৈরি করতে সহায়ক একটি পদ্ধতি প্রদান করে।
উদাহরণ: Private Variables
class Person
constructor: (name, age) ->
@name = name
@age = age
@#secret = "This is a secret" # Private variable using #
getName: -> @name
getAge: -> @age
# method to access private variable
getSecret: -> @#secret
এখানে, @#secret হল একটি প্রাইভেট ভেরিয়েবল যেটি getSecret মেথডের মাধ্যমে অ্যাক্সেস করা যেতে পারে।
২. Private Methods
Private Methods তৈরি করার জন্য CoffeeScript ক্লাসের মধ্যে সাধারণত # চিহ্ন ব্যবহার করে মেথড ডিক্লার করা হয়। এটি ক্লাসের বাইরের অ্যাক্সেসের জন্য উপলব্ধ থাকে না।
উদাহরণ: Private Methods
class Person
constructor: (name, age) ->
@name = name
@age = age
# Private method
#privateMethod: -> console.log "This is a private method."
publicMethod: ->
@#privateMethod() # Calling private method inside the class
console.log "This is a public method."
এখানে, #privateMethod একটি প্রাইভেট মেথড, যা শুধুমাত্র ক্লাসের ভিতর থেকে কল করা যায়। বাইরের কোড থেকে সরাসরি এক্সেস করা সম্ভব নয়।
CoffeeScript-এ প্রাইভেট ভেরিয়েবল এবং মেথড ব্যবহার
class Person
constructor: (name, age) ->
@name = name
@age = age
@#secret = "This is a private secret" # Private variable
getName: -> @name
getAge: -> @age
# Private method
#privateMethod: -> console.log "This is a private method."
publicMethod: ->
@#privateMethod() # Calling private method inside the class
console.log "This is a public method. Name: #{@name}, Age: #{@age}"
console.log "Secret: #{@#secret}"
# Example usage
person = new Person("Alice", 25)
console.log person.getName() # Alice
console.log person.getAge() # 25
person.publicMethod() # This is a public method. Name: Alice, Age: 25, Secret: This is a private secret
JavaScript-এ কম্পাইল হওয়া কোড:
var Person;
Person = class Person {
constructor(name, age) {
this.name = name;
this.age = age;
this.#secret = "This is a private secret";
}
getName() {
return this.name;
}
getAge() {
return this.age;
}
#privateMethod() {
return console.log("This is a private method.");
}
publicMethod() {
this.#privateMethod();
console.log("This is a public method. Name: " + this.name + ", Age: " + this.age);
console.log("Secret: " + this.#secret);
}
};
প্রাইভেট ভেরিয়েবল এবং মেথডের সুবিধা
- Encapsulation: প্রাইভেট ভেরিয়েবল এবং মেথড ব্যবহার করে আপনি ডেটাকে ইনক্যাপসুলেট করতে পারেন, অর্থাৎ ক্লাসের বাইরের কোড এই ভেরিয়েবল এবং মেথডে সরাসরি অ্যাক্সেস করতে পারবে না।
- কোড নিরাপত্তা: প্রাইভেট ভেরিয়েবল এবং মেথড ক্লাসের অব্যবহৃত অংশকে গোপন রাখে, যা কোডের নিরাপত্তা বাড়ায়।
- কোড রক্ষণাবেক্ষণ: প্রাইভেট ভেরিয়েবলগুলি শুধুমাত্র ক্লাসের ভিতরে পরিবর্তন করা যেতে পারে, যা কোডের স্থিতিশীলতা এবং রক্ষণাবেক্ষণ সহজ করে তোলে।
সারাংশ
CoffeeScript-এ প্রাইভেট ভেরিয়েবল এবং মেথড ব্যবহার করা JavaScript-এর ক্লাসের মতোই, তবে CoffeeScript সিনট্যাক্সের মাধ্যমে কোড লেখার প্রক্রিয়া অনেক সহজ এবং সংক্ষিপ্ত হয়। প্রাইভেট ভেরিয়েবল এবং মেথড ক্লাসের বাইরের কোড থেকে সুরক্ষিত থাকে এবং এটি কোডের নিরাপত্তা এবং ইনক্যাপসুলেশন নিশ্চিত করে।
Read more