7.7 জাভাস্ক্রিপ্টে Abstraction
আমরা ইতিমধ্যেই জানি যে OOP বা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং মূলত ৪ টা কনসেপ্টের উপর ভিত্তি করে গঠিত। সেগুলো হচ্ছেঃ এবস্ট্রাকশন, এনক্যাপ্সুলেশন, ইনহেরিটেন্স এবং পলিমরফিজম। এই লেখায় আমরা এবস্ট্রাকশন নিয়ে আলোচনা করব।
এবস্ট্রাকশন জাভাস্ক্রিপ্টের একটি অত্যন্ত গুরুত্বপূর্ণ টপিক। Abstraction হলো এমন একটি ধারণা, যেখানে কোনো প্রোগ্রামের অভ্যন্তরীণ বিষয়গুলো ইউজারকে না দেখিয়ে শুধুমাত্র ফাংশনালিটি দেখাবে। যেমনঃ একটা গাড়ী চালাতে হলে আপনার গাড়ীর ইঞ্জিন কিভাবে কাজ করে তার সবকিছু জানার প্রয়োজন নেই। শুধুমাত্র selected কিছু জিনিস জানা দরকার যেমন gas pedal, brake, steering wheel, blinker ইত্যাদি। তাই গাড়ীর ভিতরের ইঞ্জিনিয়ারিং গোপন রাখা হয় ড্রাইভারের থেকে।
ঠিক একই ভাবে আমরা যখন ATM থেকে টাকা তুলি, তখন ATM এ টাকা কীভাবে আসে, মানে ATM এর ভিতরের কাজকর্ম আমাদের জানার দরকার নেই। আমাদের বাটনে ক্লিক করে টাকা তুলতে পারলেই হলো। এটাই হলো এবস্ট্রাকশন, যেখানে প্রোগ্রামের অভ্যন্তরীণ মেকানিজম ইউজারকে না দেখিয়ে শুধুমাত্র তার ফাংশনালিটিগুলো ভিজিবল রাখা হয়। নিচের কোডটি দেখলে আমাদের ধারণা আরও পরিষ্কার হয়ে যাবে।
function Car(name){ this.name = name; this.start = function(){ // car starting mechanism console.log(this.name + " starts"); } this.stop = function(){ // break mechanism console.log(this.name+ " stops"); } } let mercedes = new Car("Mercedes Benz"); mercedes.start(); // Output: Mercedes Benz starts mercedes.stop(); // Output: Mercedes Benz stops
এখানে mercedes নামের নতুন অবজেক্টের গাড়ী কীভাবে স্টার্ট এবং স্টপ ইমপ্লিমেন্টেশন হয় তা জানার দরকার নেই। তার শুধুমাত্র জানা দরকার যে start মেথড কল করলে গাড়ী স্টার্ট হবে, এবং stop মেথড কল করলে গাড়ী স্টপ হবে।
উপরে আমরা কন্সট্রাক্টর ফাংশন দিয়ে উদাহরণ দিয়েছি। আমরা চাইলে তা জাভাস্ক্রিপ্ট ক্লাস দিয়েও করতে পারি।