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

 

OOP বা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং হল এক ধরনের কম্পিউটার প্রোগ্রামিং ধারণা যা অবজেক্ট কে ভিত্তি করে গঠিত। একজন ভালো সফটওয়্যার ইঞ্জিনিয়ার হতে চাইলে অবশ্যই অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং সম্পর্কে খুব ভালো ধারণা থাকতে হবে। আমরা প্রতিনিয়ত যেই সফটওয়্যার গুলো ইউজ করি অথবা নাম শুনেছি তা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর ধারণার উপর ভিত্তি করেই তৈরি করা হয়েছে। বৃহৎ আকারের কোনো সফটওয়্যার বানাতে গেলে আমাদের লেখা কোডগুলো যেন আরেকজনের কাছে বোধগম্য হয়, যাতে কোনো ঝামেলা ছাড়াই আরেকজন সেটা নিয়ে কাজ করতে পারে এবং ছোটো ছোটো ভাগে ভাগ করা যায় সেই সুবিধা গুলো থাকা দরকার। তাছাড়া আমাদের কোডের সাথে এক্সট্রা বৈশিষ্ট্যও যাতে এড করা যায়। এসব তাড়না থেকেই মূলত OOP Concepts গুলো তৈরি।

অনেক বকবক করে ফেললাম। এখন আমাদের মনে প্রশ্ন জাগতে পারে যে, অবজেক্ট জিনিস টা তাহলে কি? আসলে বস্তুগত ভাবে আমাদের চারপাশে আমরা যা দেখতে পাই অথবা অনুভব করতে পারি তাই অবজেক্ট।

সাধারণত অবজেক্ট সমস্ত প্রোগ্রামিং ভাষায় একই, অর্থাৎ তা আমাদের দৈনন্দিন জীবনের বাস্তব জিনিসগুলিকে বোঝায়, যা আমরা আমাদের প্রোগ্রামে লিখতে পারি। যদি আমাদের কোডে গাড়ি নিয়ে কাজ করতে হয় তাহলে গাড়িই হলো অবজেক্ট। 

ধরা যাক, আমরা এখন কম্পিউটার দিয়ে এই ব্লগটা পড়ছি, তাহলে আমাদের কম্পিউটারই একটা অবজেক্ট। আবার কম্পিউটারের প্রত্যেকটা উপাদানও একেকটা অবজেক্ট। যেমনঃ মাউস, কীবোর্ড, মনিটর ইত্যাদি। 

কম্পিউটার সায়েন্সের ভাষায় অবজেক্ট একটি ভ্যারিয়েবল, ফাংশন, ডাটা স্ট্রাকচার যেকোনো কিছুই হতে পারে। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-এ অবজেক্ট সাধারণত ভ্যারিয়েবল, ফাংশন কিংবা ডাটা স্ট্রাকচারের সমন্বয়ে হয়ে থাকে। জাভাস্ক্রিপ্টে প্রায় সকল জিনিসকেই অবজেক্ট হিসেবে বলা যেতে পারে। মাত্র এই ৬ টা জিনিস ছাড়া প্রায় সবকিছুকেই অবজেক্ট ধরা যেতে পারে, এই ৬ টা জিনিস হলো null, undefined, strings, numbers, boolean, and symbols। 

যেকোনো কিছুই যা প্রিমিটিভ ভ্যালু না, তাই অবজেক্ট। তা ফাংশন কিংবা Array ও হতে পারে। 

অবজেক্ট জাভাস্ক্রিপ্টের প্রায় সব স্থানেই বিদ্যমান। তাই, জাভাস্ক্রিপ্ট নিয়ে কাজ করতে হলে অবজেক্ট সম্পর্কে ধারণা থাকা অনেক বেশি জরুরী। জাভাস্ক্রিপ্টে অবজেক্ট key:value pair এ থাকে, যার প্রত্যেকটা সদস্যকে কমা (,) দিয়ে আলাদা করা হয়। নিচের উদাহরণটি খেয়াল করিঃ

const object_name = {
   key1: value1, 
   key2: value2
}

অবজেক্টের সিনট্যাক্স হবে এইরকম, সবকিছু key:value pair এ থাকবে। ধরা যাক, আমরা student নামের একটা অবজেক্ট তৈরি করতে চাই, যার নাম থাকবে এবং বয়স থাকবে। তাহলে আমরা নিচের মত করে অবজেক্ট তৈরি করতে পারি। 

// অবজেক্ট
const student = {
   name: 'Mehedi',
   class: 12
};

 

উদাহরন
  • এখানে Person নামের একটি অবজেক্ট তৈরি করা হয়েছে যার মধ্যে firstName, lastName, age, gender ও getFullName নামের প্রোপার্টি রয়েছে।
const person = {
firstName: "Anik", 
lastName: "Roy", 
age: 50, 
gender: "male", 
getFullName: function() {return this.firstName + " " + this.lastName;}
};
  • একটি employee অবজেক্ট যার name, id, post নামের ৩ টি প্রোপার্টি রয়েছে।
const employee= {
name: 'John',
id:'011',
post: 'Senior Engineer'
};
  • myCar নামের একটি অবজেক্ট যার make, model, year নামের ৩ টি প্রোপার্টি রয়েছে।
const myCar = {
make: 'Ford',
model: 'Mustang',
year: 1969,
};
এসো নিজে করি
  • একটি অবজেক্ট তৈরি কর employee নামে যেখানে তার নামঃ ‘John’ , বয়সঃ ‘৩০’, জবঃ ‘সফটওয়ার ইঞ্জিনিয়ার’, স্যালারিঃ ৫০০০০।
  • const student1 = { 
        name: 'John', 
        age: 20
    }
    const student2 = { 
        name: 'John', 
        age: 20
    }

     

    উপরোক্ত দুটি অবজেক্ট একই কিনা কিভাবে বুঝবে? 

  • জাভাস্ক্রিপ্ট এর বিল্ট-ইন অবজেক্ট বলতে কোনগুলোকে বুঝো?