আমাদের আজকের আলোচনার বিষয় প্রসিডিউর অরিয়েন্টেড প্রোগ্রামিং ও অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং – যা অধ্যায় ১ অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং এর অন্তর্ভুক্ত। বর্তমান বিশ্বের সর্বাধুনিক প্রযুক্তি হচ্ছে কম্পিউটার প্রযুক্তি। কারণ শিল্পকারখানা, গবেষণা, শিক্ষাপ্রতিষ্ঠান, চিকিৎসাশাস্ত্র ইত্যাদি সকল ক্ষেত্রই আজ কম্পিউটার অটোমেটেড। কম্পিউটার অটোমেশনের সঙ্গে কম্পিউটার প্রোগ্রামিং ও প্রোগ্রামিং লেখার জন্য প্রোগ্রামিং ল্যাংগুয়েজ অত্যন্ত গুরুত্বপূর্ণ।
তাই শিক্ষা ও গবেষণার জন্য প্রোগ্রামিং ল্যাংগুয়েজ অধ্যয়ন একটি অতি আবশ্যকীয় বিষয়। বিষয়টি অত্যন্ত গুরুত্বসহ বিবেচনা করে বর্তমানে কারিগরি শিক্ষার সকল টেকনোলজিতে কম্পিউটার প্রোগ্রামিং ল্যাংগুয়েজ বিষয়কে আবশ্যিক করা হয়েছে ।
Table of Contents
প্রসিডিউর অরিয়েন্টেড প্রোগ্রামিং ও অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং
প্রসিডিউর অরিয়েন্টেড প্রোগ্রামিং (Procedure oriented programming)
মূলতঃ হাই লেভেল ল্যাংগুয়েজ যেমন- COBOL, FORTRAN, BASIC, C ইত্যাদি ব্যবহার করে যে প্রোগ্রাম তৈরি করা হয় ভাকে স্ট্রাকচার্ড প্রোগ্রামিং কিংবা প্রসিডিউর অরিয়েন্টেড প্রোগ্রাম (POP) বলে।
এ প্রোগ্রামের প্রধান বিষয়বস্তু হচ্ছে- ফাংশন। এখানে ফাংশন ডাটা নিয়ে কাজ করে এবং ডাটার চেয়ে ফাংশনের গুরুত্ব বেশি থাকে। পঞ্চাশের দশকের দিকে যখন Assembly, FORTRAN প্রভৃতি ল্যাংগুয়েজ বের হয় তখন হাজার হাজার লাইনের প্রোগ্রাম খুব সহজে লেখা যেত। কিন্তু এই সকল language ব্যবহার করে লিখিত প্রোগ্রামগুলি কোডিং করা ছিল খুবই অসুবিধাজনক।
এই সকল অসুবিধা দূর করার জন্যই ষাটের দশকেও Structured বা Procedure Oriented Programming language তৈরি করা হয়। যেমনঃ Algol, Pascal ইত্যাদি। এই প্রোগ্রামিং পদ্ধতিতে একটি বড় প্রোগ্রামকে বা সমস্যাকে কতগুলো ছোট ছোট অংশ বা মডিউলে ভাগ করা হয়। সমস্যা সমাধানের উপর ভিত্তি করে প্রতিটি অংশের জন্য আলাদা আলাদা ফাংশন ব্যবহার করা হয় এবং পরবর্তীতে সকল ফাংশন সমূহকে একত্রিত করে সমস্যার সমাধান করা হয়।

সাধারণতঃ ফাংশনসমূহকে সাজানো কিংবা উহাদের একে অপরের মধ্যকার সম্পর্ক একটি প্রবাহ চিত্রের মাধ্যমে উপস্থাপন করা যায়।

উপরের চিত্র হতে বুঝা যায় যে, Multi function প্রোগ্রামিং এর ক্ষেত্রে প্রায় প্রতিটি ফাংশনের জন্য Global data ব্যবহার করা হয় যাতে একই ডাটা বিভিন্ন ফাংশন ব্যবহার করতে পারে। ফলে এতে System এর Security হ্রাস পায়।
বড় বড় প্রোগ্রামের ক্ষেত্রে কোন ফাংশনের জন্য কোন ডাটা ব্যবহৃত হচ্ছে তা সনাক্ত করা বেশ কষ্টকর। আবার যদি কখনো বড় কোন প্রোগ্রাম স্ট্রাকচার থেকে নির্দিষ্ট কোন ডাটা খুঁজে বের করতে চাই তাহলে পুরো প্রোগ্রাম স্ট্রাকচারকে পরীক্ষা করে দেখতে হয়। তাই এ প্রক্রিয়াটি বেশ সময় সাপেক্ষ ও বিরক্তিকর।
এর অন্যতম প্রধান একটি সমস্যা হচ্ছে, এতে ব্যবহৃত ফাংশন সমূহ Action oriented যা বাস্তব জীবনের সমস্যা সমাধানের সাথে খুব বেশি সম্পর্কিত নয়। এধরনের ল্যাংগুয়েজে প্রোগ্রামের আকার যখন বেড়ে যায় তখন এর রক্ষণাবেক্ষন, ভুল-সংশোধন, পরিবর্তন, পরিবর্ধন ও পরিমার্জন ইত্যাদি অনেক কঠিন হয়ে পড়ে।
প্রসিডিউর অরিয়েন্টেড প্রোগ্রামিং এর বৈশিষ্ট্য:
- এ ভাষায় একটি বড় প্রোগ্রামকে কতগুলো ক্ষুদ্র ক্ষুদ্র অংশে বিভক্ত করা হয়, প্রতিটি ক্ষুদ্র অংশ ‘ফাংশন’ নামে পরিচিত।
- প্রত্যেকটি ফাংশনই গ্লোবাল ডাটা শেয়ার করে।
- ডাটা সহজেই এক ফাংশন থেকে অন্য ফাংশনে Move করতে পারে।
- এক ফাংশনের ডাটা অন্য ফাংশনে সহজেই স্থানান্তরিত হতে পারে।
- এই ধরনের প্রোগ্রাম ‘Top down’ পদ্ধতিতে Design করা হয়।
- প্রত্যেকটি ফাংশনের জন্য যেমন গ্লোবাল ডাটা রয়েছে, পাশাপাশি লোকাল ডাটা ও রয়েছে।
অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং (Object oriented programming): প্রসিডিউর অরিয়েন্টেড প্রোগ্রামিং ল্যাংগুয়েজে ডাটার চেয়ে ফাংশনের গুরুত্ব বেশি এবং যখনই এ ধরনের প্রোগ্রামের আকার বেড়ে যায় তখন এর রক্ষণাবেক্ষণ, ভুল সংশোধন, পরিমার্জন, পরিবর্তন, পরিবর্ধন ইত্যাদি অনেকটা কঠিন হয়ে পড়ে। প্রসিডিউর অরিয়েন্টেড প্রোগ্রামিং এ বিদ্যমান এসব সমস্যাবলি দূর করার জন্য যে প্রোগ্রামিং এর আবির্ভাব তাই অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং (OOP)।
অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং এ একটি বৃহৎ সমস্যা (Problem) কে ছোট ছোট অংশে বিভক্ত করা হয়। ছোট ছোট অংশগুলিকে Sub problem বা Object বলা হয়। OOP-তে ফাংশনের চেয়ে ডাটার ওপর বেশি গুরুত্বারোপ করা হয়।
প্রতিটি Object এর জন্যই কিছু Data থাকে এবং ঐ ডাটাগুলোকে কাজ করানোর জন্য specific কিছু ফাংশন ও থাকে। উল্লেখ্য যে, কোন অবজেক্টের ফাংশন অন্য কোন অবজেক্টের ফাংশনকে নিয়েও কাজ করতে পারে। নিম্নে একটি OOP Organization data function এর মধ্যকার সম্পর্ক চিত্র তুলে ধরা হলো।

অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং এর বৈশিষ্ট্যঃ
- এই ধরনের system এ function এর চেয়ে data’র গুরুত্ব বেশি।
- একটি বড় প্রোগ্রামকে কতগুলো ছোট ছোট অংশে বিভক্ত করা হয়। প্রতিটি ক্ষুদ্র ক্ষুদ্র অংশ object হিসাবে পরিচিত।
- সমস্যার ধরণ অনুযায়ী data structure এর জন্য নিজস্ব data ও function ব্যবহার করা হয়।
- এতে সবগুলি ক্ষুদ্র ক্ষুদ্র অংশসমূহকে একত্রিত করে সমস্যার সমাধান করা হয়।
- একটি object এর data কে অন্য কোন object এর function দ্বারা access করা যায় না।
- এতে অবজেক্টসমূহ ফাংশন ব্যবহার করে একে অপরের সাথে যোগাযোগ রক্ষা করতে পারে। যে কোন সময়ে প্রয়োজন অনুযায়ী data কিংবা function, structure এ add করা যাবে।
- এতে বটম আপ পদ্ধতিতে program design করা হয়।
- এতে Message passing এর মাধ্যমে এক অবজেক্ট অন্য অবজেক্টের সাথে সংযোগ রক্ষা করে।
- এছাড়াও object orianted programming Class, Object, Inheritance, Data Abstraction, Data Hiding. Encapsulation, Polymorphism, Static Binding, Message passing, Concurrency, Object Persistance, Object Library ইত্যাদি বৈশিষ্ট্য বিদ্যমান।