(অবজেক্ট এবং ব্লুপ্রিন্ট দিয়ে বাস্তব-জগতের ডেটা মডেল করা)
অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) হলো অবজেক্টের উপর ভিত্তি করে একটি প্রোগ্রামিং স্টাইল। জাভাস্ক্রিপ্ট কনস্ট্রাক্টর ফাংশন এবং ES6 ক্লাস উভয়ের মাধ্যমেই OOP সমর্থন করে।
মূল OOP ধারণা:
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
console.log(`Hello, my name is ${this.name}`);
}
}
const alice = new Person("Alice", 25);
alice.greet(); // Hello, my name is Alicenew দিয়ে একটি নতুন অবজেক্ট তৈরি করার সময় constructor() স্বয়ংক্রিয়ভাবে কল হয়।this নতুন তৈরি হওয়া অবজেক্টকে নির্দেশ করে।extends ব্যবহার করে আপনি এমন একটি চাইল্ড ক্লাস তৈরি করতে পারেন যা একটি প্যারেন্ট ক্লাস থেকে ইনহেরিট করে।
class Employee extends Person {
constructor(name, age, role) {
super(name, age); // প্যারেন্ট কনস্ট্রাক্টর কল করে
this.role = role;
}
work() {
console.log(`${this.name} is working as a ${this.role}`);
}
}
const bob = new Employee("Bob", 30, "Developer");
bob.greet(); // Hello, my name is Bob
bob.work(); // Bob is working as a Developerজাভাস্ক্রিপ্ট # সিনট্যাক্স (ES2022+) দিয়ে প্রাইভেট ফিল্ড সমর্থন করে।
class BankAccount {
#balance = 0;
deposit(amount) {
this.#balance += amount;
}
getBalance() {
return this.#balance;
}
}
const acc = new BankAccount();
acc.deposit(1000);
console.log(acc.getBalance()); // 1000
// console.log(acc.#balance); // ❌ এরর: প্রাইভেট ফিল্ডচাইল্ড ক্লাস প্যারেন্ট মেথড ওভাররাইড করতে পারে:
class Animal {
speak() {
console.log("Animal makes a sound");
}
}
class Dog extends Animal {
speak() {
console.log("Dog barks");
}
}
const d = new Dog();
d.speak(); // Dog barks| ফিচার | কনস্ট্রাক্টর ফাংশন | ES6 ক্লাস সিনট্যাক্স |
|---|---|---|
| সিনট্যাক্স | ফাংশন-ভিত্তিক | পরিষ্কার, ক্লাস-ভিত্তিক |
| ইনহেরিটেন্স | prototype-এর মাধ্যমে | extends, super ব্যবহার করে |
| প্রাইভেট ফিল্ড | সমর্থিত নয় (পুরনো) | # দিয়ে সমর্থিত |
| পঠনযোগ্যতা | মাঝারি | ভালো |
একটি Car ক্লাসকে একটি ব্লুপ্রিন্ট হিসেবে ভাবুন।
এটি থেকে তৈরি হওয়া প্রতিটি অবজেক্ট (যেমন myCar, yourCar) নিজস্ব ডেটাসহ একটি প্রকৃত গাড়ি, কিন্তু একই ডিজাইন অনুসরণ করে।
constructor() ব্যবহার করুন।extends এবং super() দিয়ে কোড পুনরায় ব্যবহার করতে দেয়।# ব্যবহার করুন।getSummary() মেথডসহ একটি Book ক্লাস তৈরি করুন।Book-কে একটি এক্সট্রা issue প্রপার্টিসহ Magazine ক্লাসে এক্সটেন্ড করুন।#password-সহ একটি ক্লাস তৈরি করুন এবং সেটি পরিবর্তনের মেথড লিখুন।