জাভাস্ক্রিপ্টে class
একটি ব্লুপ্রিন্ট বা টেমপ্লেট হিসেবে কাজ করে, যা অবজেক্ট তৈরি করার জন্য ব্যবহৃত হয়। এটি ES6 (ECMAScript 2015) এ পরিচিত হয় এবং প্রোটোটাইপ-ভিত্তিক অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং (OOP) ধারণাকে ক্লাস-ভিত্তিক শৈলীতে রূপান্তর করে। class
এর মাধ্যমে কোড আরও পাঠযোগ্য, রক্ষণাবেক্ষণযোগ্য এবং সংগঠিত হয়।
ক্লাস ডিফাইন করতে class
কিওয়ার্ড ব্যবহার করা হয়। একটি ক্লাসের মধ্যে কনস্ট্রাক্টর (constructor) এবং মেথডস (methods) থাকতে পারে।
class Person {
// কনস্ট্রাক্টর
constructor(name, age) {
this.name = name;
this.age = age;
}
// মেথড
greet() {
console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
}
}
const person1 = new Person("Alice", 25);
person1.greet(); // আউটপুট: Hello, my name is Alice and I am 25 years old.
এখানে, Person
একটি ক্লাস যা name
এবং age
প্রপার্টি গ্রহণ করে এবং একটি greet
মেথড সংজ্ঞায়িত করে।
ক্লাসের মধ্যে constructor
একটি বিশেষ মেথড যা নতুন অবজেক্ট তৈরি করার সময় স্বয়ংক্রিয়ভাবে কল হয়। এটি সাধারণত ক্লাসের প্রপার্টি বা ফিল্ড ইনিশিয়ালাইজ করতে ব্যবহৃত হয়।
class Car {
constructor(make, model) {
this.make = make;
this.model = model;
}
displayInfo() {
console.log(`Car make: ${this.make}, model: ${this.model}`);
}
}
const car1 = new Car("Toyota", "Corolla");
car1.displayInfo(); // আউটপুট: Car make: Toyota, model: Corolla
এখানে, constructor
মেথডটি ক্লাসের অবজেক্ট তৈরি করার সময় make
এবং model
প্রপার্টি ইনিশিয়ালাইজ করছে।
জাভাস্ক্রিপ্টে ক্লাসের মধ্যে ইনহেরিটেন্স (Inheritance) সুবিধা রয়েছে, যার মাধ্যমে একটি ক্লাস অন্য ক্লাসের প্রপার্টি ও মেথড উত্তরাধিকারসূত্রে পেতে পারে। এটি extends
কিওয়ার্ডের মাধ্যমে করা হয়।
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a sound.`);
}
}
class Dog extends Animal {
constructor(name, breed) {
super(name); // প্যারেন্ট ক্লাসের কনস্ট্রাক্টর কল
this.breed = breed;
}
speak() {
console.log(`${this.name} barks.`);
}
}
const dog1 = new Dog("Buddy", "Golden Retriever");
dog1.speak(); // আউটপুট: Buddy barks.
এখানে, Dog
ক্লাস Animal
ক্লাস থেকে ইনহেরিট করেছে এবং speak
মেথডটি ওভাররাইড করেছে।
ক্লাসের স্ট্যাটিক মেথড একটি বিশেষ ধরনের মেথড যা ক্লাসের ইনস্ট্যান্স (অবজেক্ট) থেকে নয়, সরাসরি ক্লাস থেকে কল করা হয়। এটি সাধারণত ক্লাস-ভিত্তিক কাজ বা সহায়ক ফাংশন হিসেবে ব্যবহৃত হয়।
class MathOperations {
static add(a, b) {
return a + b;
}
static multiply(a, b) {
return a * b;
}
}
console.log(MathOperations.add(3, 4)); // আউটপুট: 7
console.log(MathOperations.multiply(3, 4)); // আউটপুট: 12
এখানে, add
এবং multiply
দুটি স্ট্যাটিক মেথড ক্লাস থেকেই কল করা হয়েছে, কোনো ইনস্ট্যান্স তৈরি না করেই।
জাভাস্ক্রিপ্ট ES2022-এ ক্লাসে প্রাইভেট প্রপার্টি ও মেথড সমর্থন করেছে, যার মাধ্যমে ক্লাসের ভিতরে প্রপার্টি বা মেথড শুধু সেই ক্লাস থেকেই অ্যাক্সেস করা যায়, বাইরের কোনো কোড থেকে নয়। এটি #
চিহ্ন দিয়ে নির্ধারণ করা হয়।
class Person {
#name; // প্রাইভেট প্রপার্টি
constructor(name, age) {
this.#name = name; // প্রাইভেট প্রপার্টি অ্যাসাইন
this.age = age;
}
greet() {
console.log(`Hello, my name is ${this.#name} and I am ${this.age} years old.`);
}
}
const person1 = new Person("Alice", 25);
person1.greet(); // আউটপুট: Hello, my name is Alice and I am 25 years old.
console.log(person1.#name); // Error: Private field '#name' must be declared in an enclosing class
এখানে, #name
একটি প্রাইভেট প্রপার্টি, যা শুধুমাত্র Person
ক্লাসের ভিতরে অ্যাক্সেস করা যাবে।
জাভাস্ক্রিপ্টের ক্লাস একটি শক্তিশালী বৈশিষ্ট্য যা অবজেক্ট ও শ্রেণিভিত্তিক প্রোগ্রামিং ধারণা সমর্থন করে। এটি প্রোটোটাইপ-ভিত্তিক জাভাস্ক্রিপ্টের জন্য একটি সংগঠিত উপায় সরবরাহ করে। ক্লাসে কনস্ট্রাক্টর, মেথড, ইনহেরিটেন্স, স্ট্যাটিক মেথড এবং প্রাইভেট প্রপার্টি/মেথডের মতো বৈশিষ্ট্য রয়েছে, যা কোডকে আরো সুশৃঙ্খল ও পাঠযোগ্য করে তোলে।
common.read_more