ES6 (ECMAScript 2015) জাভাস্ক্রিপ্টে ক্লাস সিস্টেম চালু করেছে, যা OOP (Object-Oriented Programming) এর ধারণা এবং প্যাটার্ন অনুসরণ করে। Inheritance এবং Subclassing এর মাধ্যমে আপনি কোড পুনঃব্যবহার করতে পারেন, যেখানে এক ক্লাস অন্য ক্লাসের বৈশিষ্ট্য এবং আচরণ গ্রহণ করে। ES6-এ এই ধারণাগুলো class কিওয়ার্ড ব্যবহার করে সহজে বাস্তবায়িত করা সম্ভব।
1. ES6-এ Inheritance (উত্তরাধিকার)
Inheritance হল একটি ক্লাসের বৈশিষ্ট্য ও মেথড অন্য একটি ক্লাস দ্বারা গ্রহণ করার প্রক্রিয়া। ES6-এ ক্লাস ভিত্তিক ইন্সট্যান্স তৈরি করা হয় এবং extends কিওয়ার্ডের মাধ্যমে এক ক্লাস অন্য ক্লাস থেকে উত্তরাধিকার সূত্রে বৈশিষ্ট্য ও মেথড গ্রহণ করে।
উদাহরণ:
// Parent class
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a sound`);
}
}
// Child class inheriting from Animal class
class Dog extends Animal {
speak() {
console.log(`${this.name} barks`);
}
}
const dog = new Dog('Rex');
dog.speak(); // Rex barks
এখানে Dog ক্লাস Animal ক্লাস থেকে inheritance পেয়েছে এবং speak() মেথডটি overridden করেছে।
2. ES6-এ Subclassing (সাবক্লাসিং)
Subclassing হল Inheritance এর একটি বাস্তবায়ন যেখানে একটি ক্লাস (subclass) আরেকটি ক্লাস (parent class) থেকে বৈশিষ্ট্য এবং মেথড গ্রহণ করে, এবং প্রয়োজনে সেই বৈশিষ্ট্য পরিবর্তন বা এক্সটেন্ড করে। ES6-এ extends কিওয়ার্ডের মাধ্যমে সাবক্লাসিং করা হয়।
উদাহরণ:
// Parent class
class Vehicle {
constructor(make, model) {
this.make = make;
this.model = model;
}
displayInfo() {
console.log(`${this.make} ${this.model}`);
}
}
// Child class inheriting from Vehicle class
class Car extends Vehicle {
constructor(make, model, doors) {
super(make, model); // Calls the constructor of the parent class
this.doors = doors;
}
displayInfo() {
super.displayInfo(); // Calls the parent class method
console.log(`Doors: ${this.doors}`);
}
}
const myCar = new Car("Toyota", "Camry", 4);
myCar.displayInfo();
// Toyota Camry
// Doors: 4
এখানে, Car ক্লাস Vehicle ক্লাস থেকে সাবক্লাসিং করেছে এবং displayInfo() মেথডে প্যারেন্ট ক্লাসের মেথডটিকে এক্সটেন্ড করেছে।
3. super কিওয়ার্ড
ES6-এ super কিওয়ার্ডটি ব্যবহার করা হয় প্যারেন্ট ক্লাসের কনস্ট্রাকটর এবং মেথড কল করার জন্য। super এর মাধ্যমে সাবক্লাস প্যারেন্ট ক্লাসের কনস্ট্রাকটর এবং মেথড এক্সেস করতে পারে।
উদাহরণ:
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
console.log(`Hello, my name is ${this.name}`);
}
}
class Student extends Person {
constructor(name, age, grade) {
super(name, age); // Calls the constructor of the parent class
this.grade = grade;
}
greet() {
super.greet(); // Calls the greet() method of the parent class
console.log(`I am in grade ${this.grade}`);
}
}
const student = new Student("Alice", 20, "A");
student.greet();
// Hello, my name is Alice
// I am in grade A
এখানে super(name, age) প্যারেন্ট ক্লাসের কনস্ট্রাকটরকে কল করে এবং super.greet() প্যারেন্ট ক্লাসের greet() মেথডকে কল করেছে।
4. Static Methods in ES6 Classes
ES6-এ ক্লাসে static methods সংজ্ঞায়িত করা সম্ভব, যা শুধুমাত্র ক্লাসের সাথে সম্পর্কিত থাকে, অবজেক্টের সাথে নয়। static কিওয়ার্ড ব্যবহার করে এসব মেথড ডিফাইন করা হয়।
উদাহরণ:
class MathUtil {
static add(a, b) {
return a + b;
}
static multiply(a, b) {
return a * b;
}
}
console.log(MathUtil.add(2, 3)); // 5
console.log(MathUtil.multiply(2, 3)); // 6
এখানে MathUtil ক্লাসের add() এবং multiply() মেথড দুটি static method হিসেবে ডিফাইন করা হয়েছে, তাই এগুলো ক্লাস নাম দিয়ে কল করা হচ্ছে, অবজেক্টের মাধ্যমে নয়।
5. Inheritance and Subclassing: Summary
| বিষয় | Inheritance | Subclassing |
|---|---|---|
| সংজ্ঞা | এক ক্লাস অন্য ক্লাসের বৈশিষ্ট্য গ্রহণ করে। | এক ক্লাস (subclass) অন্য ক্লাস (parent class) থেকে বৈশিষ্ট্য গ্রহণ এবং এক্সটেন্ড করে। |
extends কিওয়ার্ড | ব্যবহৃত হয় ক্লাসের উত্তরাধিকার তৈরি করতে। | ব্যবহৃত হয় এক ক্লাসের subclass তৈরি করতে। |
super কিওয়ার্ড | প্যারেন্ট ক্লাসের কনস্ট্রাকটর এবং মেথড কল করার জন্য। | সাবক্লাসে প্যারেন্ট ক্লাসের কনস্ট্রাকটর এবং মেথড কল করতে। |
| Static Methods | static মেথডের সাথে সম্পর্কিত না, কেবলমাত্র ক্লাসের সাথে সম্পর্কিত। | Static methods একইভাবে সাবক্লাসেও ব্যবহৃত হয়। |
ES6 এ Inheritance এবং Subclassing এর মাধ্যমে আপনার কোড আরও মডুলার, পুনঃব্যবহারযোগ্য এবং স্ট্রাকচারড হতে পারে। class, extends, এবং super কিওয়ার্ডগুলি এই ধারণাগুলোকে কার্যকরভাবে বাস্তবায়ন করতে সাহায্য করে।
Read more