ES6 Classes হল ECMAScript 2015 (ES6) এর একটি নতুন ফিচার যা JavaScript এ ক্লাস ভিত্তিক (class-based) অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP) সাপোর্ট প্রদান করে। এটি আগের prototype-based ইনহেরিটেন্স মডেলকে সহজতর এবং আরও পরিষ্কারভাবে উপস্থাপন করার সুযোগ দেয়। ES6 ক্লাস ব্যবহার করার মাধ্যমে কোড আরও পড়তে এবং রক্ষণাবেক্ষণ (maintenance) করতে সহজ হয়, এবং আপনি অবজেক্ট ওরিয়েন্টেড প্যাটার্নের সুবিধা পুরোপুরি উপভোগ করতে পারেন।
ES6 Classes এর সিনট্যাক্স
ES6 ক্লাসের সিনট্যাক্স সাধারণ function constructors এর থেকে অনেক বেশি পরিষ্কার এবং সহজ। এটি ক্লাসের কাঠামো ও ইনহেরিটেন্স ব্যবহারকে সহজ করে তোলে।
class ClassName {
constructor() {
// constructor body
}
methodName() {
// method body
}
}
ES6 Classes এর বৈশিষ্ট্য
- ক্লাস ডেফিনিশন (Class Definition): ES6 ক্লাস একটি নতুন সাইন্ট্যাক্সের মাধ্যমে একটি অবজেক্ট টেমপ্লেট তৈরি করে, যা আপনি বিভিন্ন ইনস্ট্যান্স তৈরি করতে ব্যবহার করতে পারেন।
- Constructor: ক্লাসের ভিতরে একটি
constructorমেথড থাকে যা ক্লাসের নতুন ইনস্ট্যান্স তৈরি হওয়ার সময় কল করা হয়। এটি অবজেক্ট ইনিশিয়ালাইজ (initialize) করার জন্য ব্যবহৃত হয়। - Methods: ক্লাসের ভিতরে বিভিন্ন মেথড (function) ডিফাইন করা যায় যা ক্লাসের ইনস্ট্যান্সের সাথে যুক্ত থাকে।
thisকীওয়ার্ড: ক্লাসের মধ্যেthisব্যবহার করে সেই ক্লাসের ইনস্ট্যান্সের প্রপার্টি ও মেথডে অ্যাক্সেস করা যায়।- Inheriting Classes (এনহেরিটেন্স): ES6 ক্লাসের মাধ্যমে আপনি এক ক্লাসের বৈশিষ্ট্য অন্য ক্লাসে হেরিট (inherit) করতে পারেন।
ES6 Classes এর উদাহরণ
ক্লাস ডেফিনিশন এবং Constructor:
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("John", 30);
person1.greet(); // "Hello, my name is John and I am 30 years old."
এখানে, Person ক্লাসের একটি constructor মেথড রয়েছে যা name এবং age প্রপার্টি ইনিশিয়ালাইজ করে এবং greet মেথড ক্লাসের ইনস্ট্যান্সের সাথে কাজ করে।
ইনহেরিটেন্স (Inheritance):
ES6 ক্লাসের মাধ্যমে একটি ক্লাস অন্য ক্লাস থেকে ইনহেরিট করতে পারে।
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a sound.`);
}
}
class Dog extends Animal {
constructor(name, breed) {
super(name); // Parent class constructor কে কল করা
this.breed = breed;
}
speak() {
console.log(`${this.name} barks.`);
}
}
const dog1 = new Dog("Buddy", "Golden Retriever");
dog1.speak(); // "Buddy barks."
এখানে, Dog ক্লাস Animal ক্লাস থেকে ইনহেরিট করেছে। super(name) এর মাধ্যমে Animal ক্লাসের constructor কে কল করা হয়েছে। Dog ক্লাসের speak() মেথড Animal ক্লাসের মেথডকে ওভাররাইড (override) করেছে।
ES6 Classes কেন প্রয়োজন?
- পরিষ্কার এবং সুন্দর সিনট্যাক্স: ES6 ক্লাস প্রাচীন prototype-based inheritance এর তুলনায় অনেক পরিষ্কার এবং সহজ। এটি কোড লেখার সময় কমপ্লেক্সিটি কমায় এবং কোডের ধারাবাহিকতা বজায় রাখে।
- অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP) প্যাটার্ন: ES6 ক্লাস OOP এর সকল প্রধান বৈশিষ্ট্য (যেমন ইনহেরিটেন্স, এনক্যাপসুলেশন, পলিমরফিজম) সাপোর্ট করে, যা বড় এবং জটিল অ্যাপ্লিকেশনের ক্ষেত্রে কোড ম্যানেজমেন্ট সহজ করে।
- ইনহেরিটেন্স: ES6 ক্লাসের মাধ্যমে সহজেই এক ক্লাস থেকে অন্য ক্লাস ইনহেরিট (inherit) করা যায়। এটি কোডের পুনঃব্যবহারযোগ্যতা (reusability) বৃদ্ধি করে।
thisএর ব্যবহার সহজতর: ES6 ক্লাসেthisকিওয়ার্ডটি পরিষ্কারভাবে কাজ করে এবং এটি সাধারণ ফাংশনের তুলনায় আরও intuitively ব্যবহার করা যায়।- মেথডের সমন্বয় (Method Binding): ES6 ক্লাসে মেথডগুলো সরাসরি ক্লাসের মধ্যে ডিফাইন করা যায়, যা
thisএর ব্যবহারকে সহজ করে এবং ফাংশন বানানোর সময় অনেক বেশি ফ্লেক্সিবিলিটি দেয়।
ES6 Classes এবং ফাংশন কনস্ট্রাক্টর: পার্থক্য
১. সিনট্যাক্স:
- ES6 ক্লাসের সিনট্যাক্স অনেক পরিষ্কার এবং সুন্দর, যেখানে ফাংশন কনস্ট্রাক্টরটি প্রাচীন উপায়ে ব্যবহার করা হয়।
- ES6 ক্লাসে
constructorএবং মেথড ডিফাইন করা সহজ হয়, যা ফাংশন কনস্ট্রাক্টরে অতিরিক্ত কোডিংয়ের প্রয়োজন।
২. this এর আচরণ:
- ES6 ক্লাসের ভিতরে
thisকিওয়ার্ডটি মেথডে সঠিকভাবে কাজ করে, যা ফাংশন কনস্ট্রাক্টরের তুলনায় কমপ্লেক্স হতে পারে।
৩. Inheriting Classes:
- ES6 ক্লাসে
extendsএবংsuper()কিওয়ার্ড ব্যবহার করে সহজে ইনহেরিটেন্স কার্যকর করা যায়, যা ফাংশন কনস্ট্রাক্টরের মাধ্যমে করার জন্য অতিরিক্ত কোডিং প্রয়োজন।
সারাংশ
ES6 ক্লাস হল JavaScript এর নতুন একটি ফিচার যা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP) ধারণাকে সহজ এবং কার্যকরভাবে প্রয়োগ করতে সহায়তা করে। এর মাধ্যমে কোডের পাঠযোগ্যতা ও রক্ষণাবেক্ষণ সহজ হয়, এবং ক্লাস ভিত্তিক ইনহেরিটেন্স সুবিধা ব্যবহার করে কোড পুনঃব্যবহারযোগ্যতা বৃদ্ধি পায়।
Read more