জাভাস্ক্রিপ্ট অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং(OOP)

Md. Rony - Sep 3 - - Dev Community

ভূমিকা:

আজকের ক্লাসে আমরা জাভাস্ক্রিপ্টের একটি গুরুত্বপূর্ণ বিষয় শিখব, সেটি হলো অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং বা OOP। এই পদ্ধতিটি প্রোগ্রামিংকে আরও সহজ এবং সুশৃঙ্খল করে তোলে। আমরা প্রথমে এর বেসিক ধারণা নিব এবং তারপর অ্যাডভান্সড টপিক্সে যাব।

বেসিক টপিকস:

1.অবজেক্ট কী?

উদাহরণ:
ধরো, তুমি একটি গাড়ি তৈরি করতে চাও। গাড়িটি একটি অবজেক্ট হবে যেখানে বিভিন্ন প্রপার্টি থাকবে যেমন: ব্র্যান্ড, মডেল, রঙ, ইত্যাদি। জাভাস্ক্রিপ্টে একটি অবজেক্ট তৈরি করতে আমরা ব্যবহার করি {}

কোড উদাহরণ:

let car = {
  brand: 'Toyota',
  model: 'Corolla',
  color: 'Red'
};
console.log(car.brand); // Output: Toyota

Enter fullscreen mode Exit fullscreen mode

ক্লাস এবং কনস্ট্রাক্টর:

ব্যাখ্যা:
ক্লাস হলো অবজেক্ট তৈরির একটি ব্লুপ্রিন্ট। কনস্ট্রাক্টর হলো একটি বিশেষ ফাংশন যা নতুন অবজেক্ট তৈরির সময় চালিত হয়।

কোড উদাহরণ:

class Car {
  constructor(brand, model, color) {
    this.brand = brand;
    this.model = model;
    this.color = color;
  }
}

let myCar = new Car('Honda', 'Civic', 'Blue');
console.log(myCar.model); // Output: Civic

Enter fullscreen mode Exit fullscreen mode

মেথড (Method):

উদাহরণ:
একটি গাড়ি স্টার্ট করতে পারলে কেমন হয়? আমরা ক্লাসের মধ্যে মেথড যোগ করতে পারি, যা অবজেক্টের সাথে কাজ করতে পারে।

কোড উদাহরণ:

class Car {
  constructor(brand, model, color) {
    this.brand = brand;
    this.model = model;
    this.color = color;
  }

  startEngine() {
    console.log(`${this.brand} ${this.model} এর ইঞ্জিন স্টার্ট হয়েছে!`);
  }
}

let myCar = new Car('Nissan', 'Altima', 'Black');
myCar.startEngine(); // Output: Nissan Altima এর ইঞ্জিন স্টার্ট হয়েছে!

Enter fullscreen mode Exit fullscreen mode

অ্যাডভান্সড টপিকস:

ইনহেরিটেন্স (Inheritance):

ব্যাখ্যা:
ইনহেরিটেন্সের মাধ্যমে আমরা একটি ক্লাস থেকে আরেকটি ক্লাসে প্রোপার্টি এবং মেথড নেওয়া যায়। এটি কোড রিইউজ্যাবিলিটি বাড়ায়।

কোড উদাহরণ:

class Vehicle {
  constructor(brand, model) {
    this.brand = brand;
    this.model = model;
  }

  displayInfo() {
    console.log(`ব্র্যান্ড: ${this.brand}, মডেল: ${this.model}`);
  }
}

class Car extends Vehicle {
  constructor(brand, model, color) {
    super(brand, model);
    this.color = color;
  }
}

let myCar = new Car('Ford', 'Mustang', 'Red');
myCar.displayInfo(); // Output: ব্র্যান্ড: Ford, মডেল: Mustang

Enter fullscreen mode Exit fullscreen mode

পলিমরফিজম (Polymorphism)

ব্যাখ্যা:

পলিমরফিজম হলো একাধিক ক্লাসের মেথডগুলির উপর ওভাররাইড করা। এটি কোডকে আরও ডাইনামিক এবং ফ্লেক্সিবল করে তোলে।

কোড উদাহরণ:

class Animal {
  makeSound() {
    console.log('Animal sound');
  }
}

class Dog extends Animal {
  makeSound() {
    console.log('Woof Woof');
  }
}

class Cat extends Animal {
  makeSound() {
    console.log('Meow');
  }
}

let myDog = new Dog();
let myCat = new Cat();

myDog.makeSound(); // Output: Woof Woof
myCat.makeSound(); // Output: Meow

Enter fullscreen mode Exit fullscreen mode

এবস্ট্রাকশন (Abstraction)

ব্যাখ্যা:
এবস্ট্রাকশন হলো কোডের শুধু প্রয়োজনীয় অংশটি দেখানো এবং বাকি অংশটি হাইড করা। এটি কোডকে সহজ ও নিরাপদ করে তোলে।

কোড উদাহরণ:

class BankAccount {
  constructor(balance) {
    this._balance = balance; // প্রাইভেট প্রোপার্টি
  }

  deposit(amount) {
    this._balance += amount;
    console.log(`ডিপোজিট: ${amount}, নতুন ব্যালেন্স: ${this._balance}`);
  }

  withdraw(amount) {
    if (amount > this._balance) {
      console.log('ব্যালেন্স অপর্যাপ্ত!');
    } else {
      this._balance -= amount;
      console.log(`উইথড্র: ${amount}, নতুন ব্যালেন্স: ${this._balance}`);
    }
  }
}

let myAccount = new BankAccount(1000);
myAccount.deposit(500); // Output: ডিপোজিট: 500, নতুন ব্যালেন্স: 1500
myAccount.withdraw(2000); // Output: ব্যালেন্স অপর্যাপ্ত!

Enter fullscreen mode Exit fullscreen mode

ইনক্যাপসুলেশন (Encapsulation):

ব্যাখ্যা:

ইনক্যাপসুলেশন বলতে বোঝায় ডেটা এবং মেথডগুলোকে একটি অবজেক্টের ভেতরে রাখা এবং বাইরের কোড থেকে সরাসরি অ্যাক্সেস নিয়ন্ত্রণ করা। এতে অবজেক্টের ডেটা সুরক্ষিত থাকে।

প্রাইভেট প্রোপার্টি এবং মেথড:

উদাহরণ:

আমরা প্রোপার্টি বা মেথডগুলিকে প্রাইভেট (private) করতে পারি, যাতে সেগুলো অবজেক্টের বাইরে থেকে অ্যাক্সেস করা না যায়। জাভাস্ক্রিপ্টে প্রাইভেট প্রোপার্টি বা মেথডের # চিহ্ন ব্যবহার করা হয়।

কোড উদাহরণ:

class Person {
  #name; // প্রাইভেট প্রোপার্টি
  constructor(name, age) {
    this.#name = name;
    this.age = age;
  }

  #getName() { // প্রাইভেট মেথড
    return this.#name;
  }

  introduce() {
    console.log(`Hello, my name is ${this.#getName()} and I am ${this.age} years old.`);
  }
}

let person1 = new Person('John', 30);
person1.introduce(); // Output: Hello, my name is John and I am 30 years old.
console.log(person1.#name); // Error: Cannot access private field '#name'

Enter fullscreen mode Exit fullscreen mode
. . . .
Terabox Video Player