- অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং কি?
অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং
প্রোগ্রামিং এর টাস্কের কাছে যাওয়ার একটি শক্তিশালী উপায়। এর প্রাথমিক শুরু থেকে, প্রোগ্রামিং বিভিন্ন পদ্ধতি দ্বারা নিয়ন্ত্রিত হয়েছে। প্রোগ্রামিং এর বিবর্তনের প্রতিটি গুরুত্বপূর্ণ পয়েন্টে, প্রোগ্রামারকে ক্রমবর্ধমান জটিল প্রোগ্রামগুলি পরিচালনা করতে সাহায্য করার জন্য একটি নতুন পদ্ধতি তৈরি করা হয়েছিল। প্রথম প্রোগ্রামগুলি কম্পিউটারের সামনের প্যানেলে সুইচগুলি টগল করে তৈরি করা হয়েছিল। স্পষ্টতই, এই পদ্ধতিটি শুধুমাত্র ক্ষুদ্রতম প্রোগ্রামগুলির জন্য উপযুক্ত। এরপরে, সমাবেশের ভাষা উদ্ভাবিত হয়েছিল, যা দীর্ঘ প্রোগ্রাম লেখার অনুমতি দেয়। পরবর্তী অগ্রগতি 1950 এর দশকে ঘটেছিল যখন প্রথম উচ্চ-স্তরের ভাষা (FORTRAN) উদ্ভাবিত হয়েছিল।
একটি উচ্চ-স্তরের ভাষা ব্যবহার করে, একজন প্রোগ্রামার কয়েক হাজার লাইন দীর্ঘ প্রোগ্রাম লিখতে সক্ষম হন। তবে, পদ্ধতি প্রথম দিকে ব্যবহৃত প্রোগ্রামিং একটি অ্যাডহক ছিল, যেকোন কিছুর দিকেই যায়
1960-এর দশকে কাঠামোবদ্ধ প্রোগ্রামিং ভাষার। এই ভাষাগুলো
Algol এবং Pascal অন্তর্ভুক্ত। আলগা ভাষায়, সি একটি কাঠামোগত ভাষা,
এবং সম্ভবত আপনি যে ধরনের প্রোগ্রামিং করছেন তা হবে
স্ট্রাকচার্ড প্রোগ্রামিং বলা হয়। স্ট্রাকচার্ড প্রোগ্রামিং নির্ভর করে
ভালভাবে সংজ্ঞায়িত নিয়ন্ত্রণ কাঠামো, কোড ব্লক, অনুপস্থিতি (বা অন্তত
GOTO এর ন্যূনতম ব্যবহার এবং সমর্থন করে এমন একক সাবরুটিন
পুনরাবৃত্তি এবং স্থানীয় ভেরিয়েবল। স্ট্রাকচার্ড প্রোগ্রামিং এর সারমর্ম
একটি প্রোগ্রাম এর উপাদান উপাদান মধ্যে হ্রাস হয়. ব্যবহার
স্ট্রাকচার্ড প্রোগ্রামিং, গড় প্রোগ্রামার তৈরি করতে পারে এবং
50,000 লাইন পর্যন্ত দীর্ঘ প্রোগ্রাম বজায় রাখুন। যদিও স্ট্রাকচার্ড প্রোগ্রামিং মাঝারি জটিল প্রোগ্রামগুলিতে প্রয়োগ করার সময় চমৎকার ফলাফল দিয়েছে, এমনকি একটি প্রোগ্রাম একটি নির্দিষ্ট আকারে পৌঁছানোর পরে এটি কিছু সময়ে ব্যর্থ হয়। আরও জটিল প্রোগ্রাম লেখার অনুমতি দেওয়ার জন্য, প্রোগ্রামিংয়ের কাজের জন্য একটি নতুন পদ্ধতির প্রয়োজন ছিল। এই লক্ষ্যে, অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং উদ্ভাবিত হয়েছিল OOP স্ট্রাকচার্ড প্রোগ্রামিং-এ মূর্ত ধারণাগুলির সেরাটি নেয় এবং তাদের শক্তিশালী নতুন ধারণাগুলির সাথে একত্রিত করে যা আপনাকে আপনার প্রোগ্রামগুলিকে আরও কার্যকরভাবে সংগঠিত করতে দেয়। অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং আপনাকে একটি সমস্যাকে এর উপাদান অংশগুলিতে পচন করতে উত্সাহিত করে। প্রতিটি উপাদান একটি স্বয়ংসম্পূর্ণ বস্তুতে পরিণত হয় যার নিজস্ব নির্দেশাবলী এবং ডেটা থাকে যা সেই বস্তুর সাথে সম্পর্কিত। এই ভাবে, জটিলতা হ্রাস করা হয় এবং প্রোগ্রামার বৃহত্তর প্রোগ্রাম পরিচালনা করতে পারে C++ সহ সমস্ত OOP ভাষা, তিনটি সাধারণ সংজ্ঞায়িত বৈশিষ্ট্য ভাগ করে: এনক্যাপসুলেশন, পলিমরফিজম এবং উত্তরাধিকার। আসুন এখন এই ধারণাগুলি তাকান।
- এনক্যাপসুলেশন
এনক্যাপসুলেশন এমন একটি প্রক্রিয়া যা কোড এবং ডেটাকে একত্রে আবদ্ধ করে এবং উভয়কেই বাইরের হস্তক্ষেপ থেকে নিরাপদ রাখে
এবং অপব্যবহার। একটি বস্তু-ভিত্তিক ভাষায়, কোড এবং ডেটা এমনভাবে একত্রিত করা যেতে পারে যাতে একটি স্বয়ংসম্পূর্ণ "ব্ল্যাক বক্স" তৈরি হয়। এই পদ্ধতিতে কোড এবং ডেটা একসাথে যুক্ত হলে একটি বস্তু তৈরি হয়। অন্য কথায়, একটি বস্তু হল ডিভাইস যা এনক্যাপসুলেশন সমর্থন করে। একটি বস্তুর মধ্যে, কোড, ডেটা, বা উভয়ই সেই বস্তুর ব্যক্তিগত বা সর্বজনীন হতে পারে। ব্যক্তিগত কোড বা ডেটা শুধুমাত্র বস্তুর অন্য অংশ দ্বারা পরিচিত এবং অ্যাক্সেসযোগ্য। অর্থাৎ, অবজেক্টের বাইরে থাকা প্রোগ্রামের একটি অংশ দ্বারা ব্যক্তিগত কোড বা ডেটা অ্যাক্সেস করা যায় না। যখন কোড বা ডেটা সর্বজনীন হয়, আপনার প্রোগ্রামের অন্যান্য অংশগুলি এটি অ্যাক্সেস করতে পারে যদিও এটি একটি বস্তুর মধ্যে সংজ্ঞায়িত করা হয়। সাধারণত, একটি বস্তুর সর্বজনীন অংশগুলি বস্তুর ব্যক্তিগত উপাদানগুলিতে একটি নিয়ন্ত্রিত ইন্টারফেস প্রদান করতে ব্যবহৃত হয়:
সমস্ত উদ্দেশ্য এবং উদ্দেশ্যে, একটি বস্তু হল একটি ব্যবহারকারী-সংজ্ঞায়িত প্রকারের একটি পরিবর্তনশীল। এটি অদ্ভুত বলে মনে হতে পারে যে একটি বস্তু যা কোড এবং ডেটা উভয়ই লিঙ্ক করে তাকে একটি পরিবর্তনশীল হিসাবে ভাবা যেতে পারে। যাইহোক, অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং-এ, এটি অবিকল ক্ষেত্রে। প্রতিবার আপনি একটি নতুন ধরনের অবজেক্ট সংজ্ঞায়িত করার সময়, আপনি একটি নতুন ডেটা টাইপ তৈরি করছেন। এই ডেটা টাইপের প্রতিটি নির্দিষ্ট উদাহরণ একটি যৌগিক পরিবর্তনশীল।
2. পলিমরফিজম
পলিমরফিজম (গ্রীক থেকে, যার অর্থ "অনেক রূপ") এমন একটি গুণ যা একটি নাম দুটি বা ততোধিক সম্পর্কিত কিন্তু প্রযুক্তিগতভাবে ভিন্ন উদ্দেশ্যে ব্যবহার করার অনুমতি দেয়। যেহেতু এটি OOP-এর সাথে সম্পর্কিত, পলিমরফিজম একটি নামকে একটি সাধারণ শ্রেণীর কর্ম নির্দিষ্ট করার অনুমতি দেয়। কর্মের একটি সাধারণ শ্রেণীর মধ্যে, নির্দিষ্ট কর্ম প্রয়োগ করা হবে ডেটার ধরন দ্বারা নির্ধারিত হয়। উদাহরণস্বরূপ, সি-তে, যা উল্লেখযোগ্যভাবে পলিমারফিজমকে সমর্থন করে না, পরম মান ক্রিয়াটির জন্য তিনটি স্বতন্ত্র ফাংশনের নাম প্রয়োজন: abs(), labs(), এবং fabs()। এই ফাংশনগুলি যথাক্রমে একটি পূর্ণসংখ্যা, একটি দীর্ঘ পূর্ণসংখ্যা এবং একটি ফ্লোটিং-পয়েন্ট মানের পরম মান গণনা করে এবং ফেরত দেয়। যাইহোক, C++ এ, যা পলিমারফিজমকে সমর্থন করে, প্রতিটি ফাংশনকে একই নামে ডাকা যেতে পারে, যেমন abs()। (এটি সম্পন্ন করা যেতে পারে এমন একটি উপায় এই অধ্যায়ে পরে দেখানো হয়েছে।) ফাংশনটি কল করার জন্য ব্যবহৃত ডেটার ধরন নির্ধারণ করে যে ফাংশনের কোন নির্দিষ্ট সংস্করণটি আসলে কার্যকর করা হয়েছে। আপনি দেখতে পাবেন, C++ এ, বিভিন্ন উদ্দেশ্যে একটি ফাংশনের নাম ব্যবহার করা সম্ভব। একে ফাংশন ওভারলোডিং বলা হয়।
আরও সাধারণভাবে, পলিমরফিজমের ধারণাটি "এক ইন্টারফেস, একাধিক পদ্ধতি" ধারণা দ্বারা চিহ্নিত করা হয়, যার অর্থ সম্পর্কিত কার্যকলাপের একটি গ্রুপের জন্য একটি জেনেরিক ইন্টারফেস ব্যবহার করা। পলিমরফিজমের সুবিধা হল যে এটি একটি ইন্টারফেসকে একটি সাধারণ শ্রেণীর কর্ম নির্দিষ্ট করার অনুমতি দিয়ে জটিলতা কমাতে সাহায্য করে। এটি প্রতিটি পরিস্থিতিতে প্রযোজ্য হিসাবে নির্দিষ্ট কর্ম নির্বাচন করা কম্পাইলারের কাজ। তুমিই প্রোগ্রামার, এই নির্বাচন ম্যানুয়ালি করতে হবে না। আপনাকে শুধুমাত্র সাধারণ ইন্টারফেসটি মনে রাখতে হবে এবং ব্যবহার করতে হবে। পূর্ববর্তী অনুচ্ছেদের উদাহরণ হিসাবে দেখায়, পরম মান ফাংশনের জন্য একটির পরিবর্তে তিনটি নাম রাখা একটি সংখ্যার পরম মান প্রাপ্ত করার সাধারণ কার্যকলাপকে এটির চেয়ে জটিল করে তোলে।
পলিমরফিজম অপারেটরগুলিতেও প্রয়োগ করা যেতে পারে। কার্যত সমস্ত প্রোগ্রামিং ভাষায় পলিমারফিজমের একটি সীমিত প্রয়োগ রয়েছে কারণ এটি গাণিতিক অপারেটরদের সাথে সম্পর্কিত। উদাহরণস্বরূপ, C-তে, + চিহ্নটি পূর্ণসংখ্যা, দীর্ঘ পূর্ণসংখ্যা, অক্ষর এবং ভাসমান-বিন্দু মান যোগ করতে ব্যবহৃত হয়। এই ক্ষেত্রে, কম্পাইলার স্বয়ংক্রিয়ভাবে জানে যে কোন ধরনের গাণিতিক প্রয়োগ করতে হবে। C++ এ, আপনি এই ধারণাটিকে আপনার সংজ্ঞায়িত অন্যান্য ধরণের ডেটাতে প্রসারিত করতে পারেন। এই ধরনের পলিমরফিজমকে অপারেটর ওভারলোডিং বলা হয়।
পলিমরফিজম সম্পর্কে মনে রাখার মূল বিষয় হল যে এটি আপনাকে সম্পর্কিত ক্রিয়াকলাপের জন্য স্ট্যান্ডার্ড ইন্টারফেস তৈরি করার অনুমতি দিয়ে আরও জটিলতা পরিচালনা করতে দেয়।
3. উত্তরাধিকার
উত্তরাধিকার এমন একটি প্রক্রিয়া যার মাধ্যমে একটি বস্তু অন্যটির বৈশিষ্ট্য অর্জন করতে পারে। আরও নির্দিষ্টভাবে, একটি বস্তুর বৈশিষ্ট্যগুলির একটি সাধারণ সেট উত্তরাধিকার সূত্রে পেতে পারে যেখানে এটি সেই বৈশিষ্ট্যগুলি যোগ করতে পারে যা শুধুমাত্র নিজের জন্য নির্দিষ্ট। উত্তরাধিকার গুরুত্বপূর্ণ কারণ এটি একটি বস্তুকে অনুক্রমিক শ্রেণিবিন্যাসের ধারণাকে সমর্থন করতে দেয়। অধিকাংশ তথ্য শ্রেণীবিন্যাস দ্বারা পরিচালিত হয়। উদাহরণস্বরূপ, একটি বাড়ির বর্ণনা সম্পর্কে চিন্তা করুন। একটি ঘর সাধারণ শ্রেণীর অংশ যাকে বিল্ডিং বলা হয়। পরিবর্তে, বিল্ডিং হল আরও সাধারণ শ্রেণী কাঠামোর অংশ, যা আরও সাধারণ শ্রেণীর বস্তুর অংশ যাকে আমরা মানবসৃষ্ট বলি। প্রতিটি ক্ষেত্রে, শিশু শ্রেণী পিতামাতার সাথে যুক্ত সেই সমস্ত গুণাবলীর উত্তরাধিকারী হয় এবং তাদের নিজস্ব সংজ্ঞায়িত বৈশিষ্ট্যগুলি যোগ করে। আদেশকৃত শ্রেণিবিন্যাস ব্যবহার না করে, প্রতিটি বস্তুকে স্পষ্টভাবে এর সাথে সম্পর্কিত সমস্ত বৈশিষ্ট্য সংজ্ঞায়িত করতে হবে। যাইহোক, উত্তরাধিকারের মাধ্যমে, কোন বস্তুকে অনন্য করে তোলে সেই নির্দিষ্ট বৈশিষ্ট্যগুলির সাথে এটি কোন সাধারণ শ্রেণীর (বা শ্রেণী) অন্তর্গত তা উল্লেখ করে বর্ণনা করা সম্ভব। আপনি দেখতে পাবেন, উত্তরাধিকার ওওপিতে খুব গুরুত্বপূর্ণ ভূমিকা পালন করে।
0 Comments