Command Palette

Search for a command to run...

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং কি? অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং আমাদের কিভাবে সাহায্য করে?
fsmdeveloper
fsmdeveloper
·14 min read

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

Object Oriented Programming কি? অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP) হচ্ছে প্রোগ্রামিং জগৎ এর সব থেকে বিভ্রান্তকর একটি কনসেপ্ট। বিশেষ করে নতুনদের মাঝে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং নিয়ে বিশাল একটা বিভ্রান্তকর চিন্তা তৈরী হয়।

বার বার অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং বোঝার চেষ্টা করেও অনেকে বুঝতে পারে না। ফলে তারা ভাবে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং অনেক কঠিন। কিন্তু আসলেই কি তাই? আমার ব্যক্তিগত মতামত হচ্ছে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর কনসেপ্ট খুবই সহজ এবং অনেক শক্তিশালী।

প্রৃথিবীতে তে অনেক ডিজাইন প্যাটার্ন রয়েছে। তার মধ্যে সব থেকে জনপ্রিয় হচ্ছে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ডিজাইন প্যাটার্ন। সেই সত্তর দশকে Alan kay নামে একজন অ্যামেরিকান কম্পিউটার সায়েন্টিস্ট এর মাথায় প্রথম অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর ধারনা আসে। সে সময়ে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং কে এত গুরত্বের সাথে দেখা না হলেও এখন কিন্তু অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ছাড়া আমরা বড় কিছু ভাবতেই পারি না। প্রোগ্রামিং জগৎ এ অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং বিশেষ ভূমিকা পালন করে থাকে।

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং কিন্তু কোন ল্যাঙ্গুয়েজ এর নিজস্ব সম্পত্তি না। যেকোনো প্রোগ্রামিং ল্যাঙ্গুয়েজ অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ডিজাইন প্যাটার্ন ব্যাবহার করতে পারে। বিশ্বের জনপ্রিয় প্রোগ্রামিং ল্যাঙ্গুয়েজ গুলো অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর ডিজাইন প্যাটার্ন মেনে চলে, যেমনঃ JAVA, Python, C++, C#, TypeScript, ES6, PHP ইত্যাদি। যেসব প্রোগ্রামিং ল্যাঙ্গুয়েজ গুলো অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ডিজাইন প্যাটার্ন ব্যাবহার করে তৈরী হয়েছে তার একটি লিস্ট দেখতে চাইলে এখানে ক্লিক করুন

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এ এমন কিছু শব্দ আছে যা প্রথমবার শুনে মনে হয় কতই না কঠিন জিনিস! কিন্তু যদি একটু ভালো করে বোঝার চেষ্টা করেন তাহলে বুঝতে পারবেন এই শব্দ গুলো শুনতে যতটা কঠিন ঠিক ততটাই সহজ এর কনসেপ্ট। তো চলুন জেনে নেওয়া যাক সেই শব্দ গুলো এবং তার কনসেপ্ট।

Class কি? অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর মধ্যে প্রধান হচ্ছে এর ক্লাস। এই ক্লাস এর মধ্যেই সব কিছু ডিফাইন করা হয়। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর ক্লাস এর সাথে আপনি মানব দেহের তুলনা করতে পারেন। প্রতিটা মানব দেহের মধ্যে যেমন কিছু বৈশিষ্ট্য থাকে ঠিক তেমন অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর প্রতিটা ক্লাস এর মধ্যেও কিছু বৈশিষ্ট্য থাকে।

উদাহরণ হিসেবে বলা যায় প্রতিটা মানুষেরই নাক, কান, চোখ, মুখ, হাত, পা ইত্যাদি থাকে এবং একটি ক্লাস এরও রয়েছে মেথড, প্রপার্টি, এট্রিবিউটস ইত্যাদি। কিন্তু প্রতি টা মানুষের মধ্যেই কিন্তু এমন কিছু থাকে যা একজন এর থেকে আরেকজনকে আলাদা করে থাকে।

যেমন একজন মানুষের ফিঙ্গারপ্রিন্ট এর সাথে অন্য একজন মানুষের ফিঙ্গারপ্রিন্ট এর সাথে মিলবে না। ক্লাস এরও থাকে ভিন্ন ভিন্ন রুপ যা দুটি ক্লাস কে আলাদা করে থাকে। প্রতি টা মানুষেরই রয়েছে নিজ নিজ ক্ষমতা এবং প্রতি টা ক্লাস এরও রয়েছে নিজ নিজ ক্ষমতা।

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর ক্লাস এর মধ্যে ব্যাবহার করা হয় বিভিন্ন ধরনের মেথড, প্রপার্টি, এট্রিবিউটস ইত্যাদি।

আসুন আগে মেথড ও প্রপার্টি কি ভালো করে বোঝা যাক।

আপনার নিশ্চয়ই একটি মুখ আছে আর সেই মুখ দিয়ে আপনি কথা বলতে পারেন, তাই না?

এইযে আপনার একটি মুখ আছে ও রয়েছে এর নির্দিষ্ট একটি নাম এবং এর কাজ হচ্ছে কথা বলা বা গান গাওয়া। 😂

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

"তোমার কাজ হচ্ছে শুধু মাহফুজুর রহমান এর মত গান গাওয়া 😁😉😋, তাহলে এখন শুরু কর"

এই কথা বলা মাত্রই মুখ নামের মেথড টি গাইতে শুরু করবে "শুধু তুমি তুমি তুমি তুমি তুমি তুমি শুধু তুমি......" 😀

যাইহোক, আর আপনার নিশ্চয়ই একটি মোবাইল আছে? যদি থেকে থাকে তাহলে সেটা আপনার প্রপার্টি বা সম্পদ। আপনার মোবাইল টি দিয়ে আপনি যা খুশী করতে পারেন তাই না?

ঠিক একইভাবে ক্লাস এর মধ্যেও আমরা মোবাইল নামে একটি প্রপার্টি তৈরী করতে পারি এবং এটি হবে এই ক্লাস এর সম্পদ। এই ক্লাস থেকে এই মোবাইল টি ব্যাবহার করে আমরা যা খুশী করতে পারি।

অর্থাৎ মেথড ব্যাবহার করে আমরা নির্দিষ্ট একটি কাজ সম্পন্ন করতে পারি, আর প্রপার্টি গুলো আমাদের সাহায্য করে থাকে বিভিন্নভাবে। আশা করছি মেথড ও প্রপার্টি কি সেটা একটু হলেও বোঝাতে পেরেছি।

Object কি? অবজেক্ট হচ্ছে ক্লাস এর একটি Instance বা Blueprint. যদি আমরা একটি ক্লাস এর মধ্যে থাকা প্রপার্টি, মেথড বা অন্য কিছু ব্যাবহার করতে চাই তাহলে সেই ক্লাস এর একটি অবজেক্ট তৈরী করতে হয় আমাদের। অবজেক্ট ব্যাবহার করে সেই ক্লাস এর প্রপার্টি, মেথড, এট্রিবিউটস এর সাথে অপারেশন চালাতে পারি।

নিচে ক্লাস এর সাথে অবজেক্ট ব্যাবহার করে একটি উদাহরণ দেওয়া হলঃ

//Person Class class Person { String name = "Sm Shohag";

public void sayMyName() { System.out.println(name); } }

//PersonInfo Class class PersonInfo { public static void main(String[] args) {

Person nameObj = new Person();

nameObj.sayMyName(); } উপরের জাভা কোড টি রান করলে আউটপুট পাবেন "Sm Shohag"

Encapsulation কি? এনক্যাপসুলেসন হচ্ছে OOP এর আরেকটি কনসেপ্ট যার মাধ্যমে আপনি ডেটা রক্ষা করতে পারবেন। এনক্যাপসুলেসন এর মাধ্যমে আপনি বলে দিতে পারবেন যে আপনার ওয়েবসাইট এর নির্দিষ্ট একটি পার্ট কোন কোন ইউজার দেখতে পারবে এবং কোন কোন ইউজার দেখতে পারবে না। এক কথায় বলতে পারেন এনক্যাপসুলেসন প্রাইভেসি নিয়ে কাজ করে।

এনক্যাপসুলেসন এর আছে ৩ টি Access Modifiers.

Public Private Protected কোন একটি ক্লাস এর মাঝে মেথড বা প্রপার্টি তে যদি আপনি Private ব্যাবহার করেন, তাহলে শুধুমাত্র এই ক্লাস টিই তার Access পাবে।

কোন একটি ক্লাস এর মাঝে মেথড বা প্রপার্টি তে যদি আপনি Protected ব্যাবহার করেন, তাহলে এর সাব ক্লাস অথবা এই ক্লাস এর প্যাকেজ তার Access পাবে।

কোন একটি ক্লাস এর মাঝে মেথড বা প্রপার্টি তে যদি আপনি Public ব্যাবহার করেন, তাহলে অন্য যেকোনো ক্লাস থেকে এটাকে ব্যাবহার করা যাবে।

এনক্যাপসুলেসন এর এই ৩ টি কনসেপ্ট মাথায় রাখলেই চলবে।

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

আপনি যেই ক্লাস এর সবকিছু ব্যাবহার করতে চাচ্ছেন সেই ক্লাস কে আপনার বর্তমান ক্লাস এর সাথে Extends করতে হবে।

ফলে আপনি সেই ক্লাস এর প্রাইভেট বাদে যাবতীয় সব কিছু ব্যাবহার করতে পারবেন। আরো সহজ করে বলতে গেলে মনে করুন আপনার বাবার একটি সুন্দর এবং দামী গাড়ি আছে, এখন আপনি চাচ্ছেন সেই গাড়ি টি নিয়ে আপনার গার্ল ফ্রেইন্ড এর সাথে লং ড্রাইভে যেতে।

এখন আপনি কি আপনার বাবার পারমিশন ছাড়া গাড়ি টি নিতে পারবেন?

যদি আপনি আপনার বাবার একজন আদর্শ ছেলে হয়ে থাকেন তাহলে অবশ্যই আপনি আপনার বাবার কাছে পারমিশন চাইবেন, আর আপনার বাবা যদি OOP এর ক্লাস এর মত এত দয়ালু হয় তাহলে চোখ বন্ধ করে পারমিশন দিয়ে দিবে। তারপর আপনি সেই গাড়ি টি নিয়ে লং ড্রাইভে যান বা যা খুশী করেন সেটা আপনার ব্যাপার। 😁

Polymorphism কি? পলিমরফিজম বেশ কঠিন একটি শব্দ তাই না? এটা মূলত গ্রীক শব্দ থেকে এসেছে। এর অর্থ হচ্ছে বহুরূপী। এর নামের সাথে কাজেরও মিল রয়েছে। 😀

পলিমরফিজম এর মাধ্যমে মেথড ওভারলোডিং করা হয়। মনে করুন একটি ক্লাস এর মধ্যে একটি মেথড রয়েছে। মেথড এর নাম কিন্তু একটাই, কিন্তু সে ভিন্নি ভিন্ন কাজ করতে সক্ষম। আমরা বলে দিতে পারবো যে কখন এই মেথডটি কিভাবে কাজ করবে।

অনেক তো হল কনসেপ্ট নিয়ে কথা!! এখন একটু আলোচনা করা যাক এই Object Oriented Programming আমাদের কাজ কে কত টা সহজ করে দিয়েছে এবং আমাদের কিভাবে সাহায্য করছে।

Object Oriented Programming আমাদের কিভাবে সাহায্য করে? অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং আপনার কাজ কে করবে সহজ এবং কোড কে করবে অনেক শক্তিশালী।

যদি আপনি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ব্যাবহার করে কিছু তৈরী করেন তাহলে সেটা পরিচালনা করতে পারবেন খুব সহজেই।

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

মনে করুন একটি কোম্পানি তৈরী হয়েছে এবং তারা চাচ্ছে তাদের জন্য একটি সফটওয়্যার বা ওয়েবসাইট বানাতে। তারা ৫ জন ডেভেলপারস হায়ার করলো তাদের সফটওয়্যার বা ওয়েবসাইট তৈরী করে দেওয়ার জন্য। কাজ প্রায় অর্ধেক হয়ে গেছে, এমন সময় দুর্ভাগ্যবশত একজন কে চাকরি ছেড়ে দিতে হল। ৫ জন এর মাঝে একজন আর নেই।

যে একজন চাকরি ছেড়ে চলে গেছে সে কিন্তু অনেক কোড করেছিলো এই ওয়েবসাইট বা সফটওয়্যার এর জন্য। তার জায়গায় অন্য নতুন একজন ডেভেলপার আসলো এবং সে কোড লেখা শুরু করলো এবং শেষ পর্যন্ত সেই কাজ টি সম্পন্নও হল।

লক্ষ্য করুন, একজন চলে যাওয়ার পরেও কিন্তু কাজটি থেমে থাকেনি, তার জায়গায় নতুন একজন এসে বাকি কাজ গুলো করেছে। এটা কিন্তু সম্ভব হয়েছে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর কারনে।

তারা এই প্রোজেক্ট জুড়ে ব্যাবহার করেছিলো অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং, যার কারনে কোড গুলো করা হয়েছিলো স্ট্রাকচার্ড ভাবে, যার কারনে পরবর্তীতে নতুন ডেভেলপার আশার পর সে সহজেই অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর ডিজাইন অনুযায়ী কোড করে কাজটি সম্পন্ন করেছিলো।

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর মধ্যে আছে কোড করার একটা ভিন্ন স্টাইল। নিয়ম কানুন মেনেই অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং কোড করা হয়, ফলে একজন এর কাজ আরেকজন চাইলে সহজেই শেষ করতে পারে।

এখন মনে করুন এই ওয়েবসাইট বা সফটওয়্যার টি তে কোন রকম অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং বা ডিজাইন প্যাটার্ন ফলো করে তৈরী করা হচ্ছিলো না, ফলে কি হতো?

যখন ৫ জনের মধ্যে একজন চলে যেত ঠিক তখনই সেটা বন্ধ হয়ে যেত, কারন সে কোন নিয়ম কানুন মেনে কোড করছিলো না তাই অন্য একজন এসে বাকি কাজ গুলো করতে পারতো না। তার করা কোড অন্য কেও ভালভাবে বুঝতে পারতো না, ফলে কাজ টি আর সম্পন্ন করা যেতো না এবং কোম্পানির অনেক ক্ষতি হতো।

আর এভবাবেই OOP প্রতিনিয়ত সাহায্য করে যাচ্ছে আমাদেরকে।

কিছু কথা এখানে আমার খুদ্র নলেজ থেকে চেষ্টা করেছি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর উপর একটা ধারনা দেওয়ার। লেখালেখি তে আমি একদমই নতুন। জানি না কতটুকু আপনাদের বোঝাতে পেরেছি এই লেখার মাধ্যমে! আমি ও আপনাদের মতই নতুন এবং শিখে যাচ্ছি। যেহেতু আমি নতুন সেহেতু এই লেখার মধ্যে কোন তথ্য ভুল থাকতেই পারে। আশা করছি আমার ভুল গুলো ক্ষমা সুন্দর দৃষ্টি তে দেখেবেন।

আর একটা কথা, আমার এই ওয়েবসাইট টি কিন্তু মূলত আপনাদের জন্যই তৈরী করেছি, তাই আপনার কাছে যদি এটা ভালো লেগে থাকে, তাহলে অবশ্যই আপনার বন্ধুদের সাথে শেয়ার করবেন যারা নতুন কিছু শিখতে ও জানতে আগ্রহী।

আজকের মত এখানেই বিদায় নিচ্ছি ধন্যবাদ 😍

Happy Coding <>

এই টিউটোরিয়াল টি প্রথম প্রকাশিত হয় আমার পার্সোনাল ব্লগ FsmDeveloper.Tech সাইটে! ঘুরে আসার জন্য অনুরোধ করা হলো!

Comments

  • Type and hit enter to post comment
  • For multiline comments, use Shift + Enter
  • You can use markdown syntax for formatting

Cookie Consent

We use cookies to enhance your browsing experience and analyze our traffic. By clicking "Accept", you consent to our use of cookies.