অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) একটি প্রোগ্রামিং প্যারাডাইম যা "অবজেক্ট" কনসেপ্টের উপর ভিত্তি করে। অবজেক্টে ডেটা থাকতে পারে (অ্যাট্রিবিউট বা বৈশিষ্ট্য হিসেবে) এবং নির্দেশাবলী (মেথড হিসেবে) থাকতে পারে।
উদাহরণস্বরূপ, একজন ব্যক্তি একটি অবজেক্ট যার কিছু প্রোপার্টি আছে যেমন উচ্চতা, লিঙ্গ, বয়স ইত্যাদি। এর কিছু মেথডও আছে যেমন চলে যাওয়া, কথা বলা ইত্যাদি।
অবজেক্ট (Object)
এটি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং-এর বেসিক ইউনিট। ডেটা এবং ডেটার ওপর কাজ करनेवाले ফাংশন দুটো একসাথে বান্ডেল করা হয়ে একটি ইউনিটকে অবজেক্ট বলা হয়।
ক্লাস (Class)
যখন আপনি একটি ক্লাস ডিফাইন করেন, আপনি একটি অবজেক্টের জন্য ব্লুপ্রিন্ট বা নকশা তৈরি করেন। এটি আসলে কোনো ডেটা ডিফাইন করে না, বরং এটি ডিফাইন করে যে ক্লাসের নামের মানে কী, অর্থাৎ এই ক্লাসের একটি অবজেক্ট কী কী নিয়ে গঠিত এবং সেটির ওপর কী কী অপারেশন করা যাবে।
OOP-এর চারটি মৌলিক কনসেপ্ট আছে যার ওপর এটি সম্পূর্ণভাবে ভিত্তি করে। আসুন এগুলো আলাদা আলাদা দেখি:
- অবস্ট্রাকশন (Abstraction) - বাইরের জগতে শুধু জরুরি তথ্য দেওয়া এবং ব্যাকগ্রাউন্ড ডিটেইলগুলো লুকিয়ে রাখা। উদাহরণস্বরূপ, একটি ওয়েব সার্ভার কীভাবে ডেটা প্রসেস করে সেটি লুকিয়ে রাখে, এন্ড ইউজার শুধু এন্ডপয়েন্ট হিট করে এবং ডেটা পায়।
- এনক্যাপসুলেশন (Encapsulation) - ডেটা মেম্বার (ভেরিয়েবল, প্রোপার্টি) এবং মেম্বার ফাংশন (মেথড)কে একটি একক ইউনিটে বান্ডেল করার প্রক্রিয়া। এটি নির্দিষ্ট প্রোপার্টিতে অ্যাক্সেস সীমাবদ্ধ করার একটি উপায়ও।
- ইনহেরিটেন্স (Inheritance) - একটি বিদ্যমান ক্লাস থেকে একটি নতুন ক্লাস তৈরির ক্ষমতা। ইনহেরিটেন্স ব্যবহার করে আমরা একটি প্যারেন্ট ক্লাস থেকে চাইল্ড ক্লাস তৈরি করতে পারি যাতে সেটি প্যারেন্টের প্রোপার্টি ও মেথড ইনহেরিট করে এবং তার নিজস্ব অতিরিক্ত প্রোপার্টি ও মেথড রাখতে পারে। উদাহরণস্বরূপ, যদি আমাদের একটি Vehicle ক্লাস থাকে যার প্রোপার্টি আছে Color, Price ইত্যাদি, তবে আমরা সেটি থেকে Bike এবং Car নামে দুটি ক্লাস তৈরি করতে পারি যাদের ওই দুটি প্রোপার্টি থাকবে এবং তাদের নিজস্ব স্পেশালাইজড প্রোপার্টি থাকবে যেমন Car-এ numberOfWindows থাকবে কিন্তু Bike-এ নয়। মেথডের ক্ষেত্রেও একই কথা প্রযোজ্য।
- পলিমরফিজম (Polymorphism) - পলিমরফিজম শব্দের অর্থ হলো অনেক রূপ ধারণ করা। সাধারণত পলিমরফিজম ঘটে যখন ক্লাসের একটি হায়ারার্কি থাকে এবং সেগুলো ইনহেরিটেন্স দিয়ে রিলেটেড থাকে। C++ পলিমরফিজম মানে একটি মেম্বার ফাংশন কল করলে, সেটি কল করার অবজেক্টের টাইপের উপর ভিত্তি করে ভিন্ন ফাংশন এক্সিকিউট হবে। উদাহরণস্বরূপ, যদি Shape নামে একটি ক্লাস থাকে এবং সেটিতে getArea নামে একটি মেথড থাকে, তবে শেপটি কী তার উপর নির্ভর করে এরিয়া ভিন্ন ভাবে ক্যালকুলেট হবে (সার্কেল বরং স্কয়ারের জন্য)।
আপনি C++ অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং সম্পর্কে আরও শিখতে চাইলে TutorialsPoint-এর এই টিউটোরিয়াল দেখতে পারেন।