DEV Community

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

Posted on

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

ভূমিকা:

আজকের ক্লাসে আমরা জাভাস্ক্রিপ্টের একটি গুরুত্বপূর্ণ বিষয় শিখব, সেটি হলো অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং বা 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

Top comments (7)

Collapse
 
rezaul profile image
rezaul karim

Alhamdulillah onek sundor

Collapse
 
md_hasibulhasan_ce7e460 profile image
Md. Hasibul Hasan

Alhamdulillah

Collapse
 
khabbab_hossen profile image
MD.KHABBAB HOSSEN

এমন সুন্দর টিউটরিয়াল দেওয়ার জন্য অনেক অনেক ধন্যবাদ।

Collapse
 
mdronyahmed profile image
Md. Rony

Zazahkallahu Khair

Collapse
 
mohammad_ullah profile image
Mohammad Ullah

Thank you for providing such a detailed blog on JavaScript OOP.

Collapse
 
sabbirmms profile image
Sabbir MMS

❤💥

Collapse
 
md_shahinalam_eb6046c6f5 profile image
Md Shahin Alam

masallah