অধ্যায় ১ঃ অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং
রচনামূলক
১. Software বিবর্তনের ধাপগুলো বর্ণনা কর।
উত্তরঃ সৃষ্টিজগতের প্রতিটি ক্ষেত্রে বিবর্তন (Evolution) একটি অত্যাবশ্যকীয় শব্দ। বর্তমানের চাহিদা মেটাতে পরিবর্তন বা বিবর্তনের আ উন্নয়নের কোনাে বিকল্প নেই। তবে যে জগতে এ পরিবর্তনের মাত্রা সর্বাধিক এবং নৈমিত্তিক সেটি হচ্ছে সফটওয়্যার জগৎ। প্রখ্যাত আর্টিফিসিয়াল ইন্টেলিজেন্স (Artificial Intelligence) প্রযুক্তির লেখক আর্নেস্ট টেলাের (Earnest Tellor)-এর মতো অটওয়্যার জগতের বিবর্তন একটি গাছের বেড়ে ওঠার মতােই। একটি গাছ যেমন কয়েকটি ধাপে পূর্ণাঙ্গরূপে পরিণত হয় তেমনি আজকের এই আধুনিক ও যুগােপযােগী সফটওয়্যার টেকনােলজিও পূর্বের কয়েকটি ধাপের বিবর্তনেরই ফসল। মূলত আজকের আটওয়্যার টেকনােলজির বিবর্তন ৪টি ধাপে সম্পন্ন হয়েছে। ধাপগুলাে হচ্ছেঃ |
-
মেশিন ল্যাংগুয়েজ (Machine language),
-
অ্যাসেম্বলি ল্যাংগুয়েজ (Assembly language),
-
প্রসিডিউর অরিয়েন্টেড প্রােগ্রামিং (Procedure oriented programming),
-
অবজেক্ট অরিয়েন্টেড প্রােগ্রামিং (Object oriented programming)।
মেশিন ল্যাংগুয়েজ (Machine language) :
যে ভাষায় সমস্যা সমাধানের জন্য বাইনারি সংখ্যা (01) ব্যবহার করে ( Instruction) সাজিয়ে প্রোগ্রাম রচনা করা হয়, তাই মেশিন ল্যাংগুয়েজ (Machine language) ।
-
মেশিন ল্যাংগুয়েজে লিখিত প্রোগ্রামকে অবজেক্ট প্রােগ্রাম (Object program) বলে।
-
এ ভাষায় প্রােগ্রাম লেখা তুলনামূলকভাবে কষ্টসাধ্য এবং সময়সাপেক্ষ।এ ভাষায় লিখিত প্রােগ্রাম নির্বাহের জন্য কোন অনুবাদক প্রোগ্রামের (Translator) প্রয়ােজন হয় না।
-
এক ধরনের মেশিনের জন্য লিখিত প্রোগ্রাম অন্য ধরনের মেশিনে ব্যবহার করা যায় না।
-
এ ভাষায় প্রােগ্রাম লেখার জন্য কম্পিউটারে প্রতিটি ইন্সট্রাকশন এবং মেমরি অ্যাড্রেস সম্বন্ধে পরিষ্কার ধারণা থাকা অপরিহার্য।
অ্যাসেম্বলি ল্যাংগুয়েজ (Assembly language): বিশেষ সংক্ষিপ্ত সংকেত বা নেমােনিক (ADD, SUB, MUL, DIV ,LOAD, MOV, MVI, JMP, JNZ, INC ইত্যাদি) ব্যবহার করে যে ভাষায় প্রােগ্রাম রচনা করা হয়, তাকে অ্যাসেম্বলি ল্যাংগুয়ে (Assembly language) বলে। যেমন- MASM, TASM ইত্যাদি।
-
এ ভাষায় লিখিত প্রােগ্রামকে সাের্স প্রােগ্রাম (Source program) বলে।
-
মেশিন ল্যাংগুয়েজের তুলনায় অ্যাসেম্বলি ল্যাংগুয়েজে প্রােগ্রাম রচনা অপেক্ষাকৃত সহজ ও কম সময়সাপেক্ষ হলেও হাইলেভেল ল্যাংগুয়েজের তুলনায় কষ্টসাধ্য এবং সময় সাপেক্ষ।
-
এ ভাষায় প্রােগ্রাম রচনার জন্য প্রচুর কমান্ড (Command) মুখস্থ রাখতে হয়।
-
এ ভাষায় লিখিত প্রােগ্রাম নির্বাহের জন্য অনুবাদক প্রােগ্রামের (Assembler) প্রয়ােজন হয়।
প্রসিডিউর অরিয়েন্টেড প্রােগ্রামিং (Procedure oriented programming): মূলত হাই লেভেল ল্যাংগুয়েজ যেমন- COBOL, FORTRAN, BASIC, C ইত্যাদি ব্যবহার করে যে প্রােগ্রাম তৈরি করা তাকে স্ট্রাকচার্ড প্রােগ্রামিং কিংবা প্রসিডিউর অরিয়েন্টেড প্রােগ্রাম (POP) বলে। এ প্রােগ্রামের প্রধান বিষয়বস্তু হচ্ছে- ফাংশন। এখানে ফাংশন ডাটা নিয়ে কাজ করে এবং ডাটার চেয়ে ফাংশনের গুরুত্ব বেশি থাকে। পঞ্চাশের দশকের দিকে যখন Assembly FORTRAN প্রভৃতি ল্যাংগুয়েজ বের হয় তখন হাজার হাজার লাইনের প্রােগ্রাম খুব সহজে লেখা যেত। কিন্তু এসব language ব্যবহার করে লিখিত প্রােগ্রামগুলাে কোডিং করা ছিল খুবই অসুবিধাজনক। এসব অসুবিধা দূর করার জন্যই ষাটের দশকে Structured বা Procedure oriented programming language তৈরি করা হয়। যেমন- Algol, Pascal ইত্যাদি। এই প্রোগ্রামিং পদ্ধতিতে একটি বড় প্রােগ্রামকে বা সমস্যাকে কতগুলাে ছােট ছােট অংশ বা মডিউলে ভাগ করা হয়। সমস্যা সমাধানের উপর ভিত্তি করে প্রতিটি অংশের জন্য আলাদা আলাদা ফাংশন ব্যবহার করা হয় এবং পরবর্তীতে সকল ফাংশনসমূহকে একত্রিত করে সমস্যার সমাধান করা হয়।. এ ভাষায় একটি বড় প্রােগ্রামকে কতগুলাে ক্ষুদ্র ক্ষুদ্র অংশে বিভক্ত করা হয়, প্রতিটি ক্ষুদ্র অংশ ‘ফাংশন নামে পরিচিত।
-
প্রত্যেকটি ফাংশনই গ্লোবাল ডাটা শেয়ার করে।
-
ডাটা সহজেই এক ফাংশন থেকে অন্য ফাংশনে Move করতে পারে।
-
এক ফাংশনের ডাটা অন্য ফাংশনে সহজেই স্থানান্তরিত হতে পারে।
-
এই ধরনের প্রােগ্রাম 'Top down' পদ্ধতিতে Design করা হয়।
-
প্রত্যেকটি ফাংশনের জন্য যেমন গ্লোবাল ডাটা রয়েছে, পাশাপাশি লােকাল ডাটাও রয়েছে।
অবজেক্ট অরিয়েন্টেড প্রােগ্রামিং (Object oriented programming): প্রসিডিউর অরিয়েন্টেড প্রোগ্রামিং ল্যাংগুয়েজে ডাটার চেয়ে ফাংশনের গুরুত্ব বেশি এবং যখনই এ ধরনের প্রােগ্রামের আকার বেড়ে যায় তখন এর রক্ষণাবেক্ষণ, ভুল সংশােধন, পরিমার্জন, পরিবর্তন, পরিবর্ধন ইত্যাদি অনেকটা কঠিন হয়ে পড়ে। প্রসিডিউর অরিয়েন্টেড প্রােগ্রামিং এ বিদ্যমান এসব সমস্যাবলি দূর করার জন্য যে প্রােগ্রামিং এর আবির্ভাব তাই অবজেক্ট অরিয়েন্টেড প্রােগ্রামিং (OOP)। | অবজেক্ট অরিয়েন্টেড প্রােগ্রামিং এ একটি বৃহৎ সমস্যা (Problem)-কে ছােট ছােট অংশে বিভক্ত করা হয়। ছােট ছােট অংশগুলােকে Sub problem বা Object বলা হয়। OOP-তে ফাংশনের চেয়ে ডাটার ওপর বেশি গুরুত্বারােপ করা হয়। প্রতিটি Object এর জন্যই কিছু Data থাকে এবং ঐ ডাটাগুলােকে কাজ করানাের জন্য Specific কিছু ফাংশনও থাকে।
-
এই ধরনের System এ Function এর চেয়ে Data’র গুরুত্ব বেশি ।
-
একটি বড় প্রােগ্রামকে কতগুলাে ছােট ছােট অংশে বিভক্ত করা হয়। প্রতিটি ক্ষুদ্র ক্ষুদ্র অংশ Object হিসাবে পরিচিত।
-
সমস্যার ধরন অনুযায়ী Data structure এর জন্য নিজস্ব Data ও Function ব্যবহার করা হয়।
-
এতে সবগুলাে ক্ষুদ্র ক্ষুদ্র অংশসমূহকে একত্রিত করে সমস্যার সমাধান করা হয়।
-
একটি Object-এর Data-কে অন্য কোনাে Object এর Function দ্বারা Access করা যায় না।
-
এতে অবজেক্টসমূহ ফাংশন ব্যবহার করে একে অপরের সাথে যােগাযােগ রক্ষা করতে পারে।
-
যে-কোনাে সময়ে প্রয়ােজন অনুযায়ী Data কিংবা Function, Structure এ Add করা যাবে।
-
এতে বটম আপ পদ্ধতিতে Program design করা হয়।
-
এতে Message passing-এর মাধ্যমে এক অবজেক্ট অন্য অবজেক্টের সাথে সংযােগ রক্ষা করে।
-
এছাড়াও Object oriented programming এ Class, Object, Inheritance, Data Abstraction, Dal. Hiding, Encapsulation, Polymorphism, Static Binding, Message Passing, Concurrency. Obje Persistence, Object Library ইত্যাদি বৈশিষ্ট্য বিদ্যমান।