Skip to main content

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং






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

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

এন্টিটি বলতে কোন স্বাধীন অস্তিত্বকে বুঝায়। অর্থাৎ যাকে আমরা এন্টিটি বলব, সে অবশ্যই কাল্পনিক কোন কিছু না।

এখন অবজেক্ট ওরিয়েন্টেড বলতে কি বুঝব?

কোন অবজেক্টকে ঘিরে তাঁর অবস্থা ও বৈশিষ্ট্য দিয়ে বর্ণনা করা গেলে তাঁকে অবজেক্ট অরিয়েন্টেশন বলা যায়।

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





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

অবজেক্ট ওরিয়েন্টেশন বুঝলে আমরা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের দিকে এগুতে পারব।

আমরা যখন অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং করব, তখন আমাদের কিছু কাজ আগে করে নিতে হবে।
অবজেক্ট ওরিয়েন্টেড এনালাইসিস(Object Oriented Analysis or OOA) এবং অবজেক্ট ওরিয়েন্টেড ডিজাইন(Object Oriented Design or OOD)।

অবজেক্ট ওরিয়েন্টেড এনালাইসিস বোঝাচ্ছে অবজেক্ট খুঁজে বের করে সে অনুযায়ী ডিজাইনের জন্য প্রস্তুত করা।
ধরি, আমরা এমন একটি সফটওয়্যার বানাতে চাচ্ছি, যেখানে কিছু লোকের ঠিকানা সঠিকভাবে রাখা যাবে।
তাহলে চিন্তা করি, এখানে অবজেক্ট কি কি হতে পারে? লোক আর তাঁর এড্রেস। আর কোন অবজেক্ট চোখে পড়ছে কি? সূক্ষ্মভাবে বেশকয়েকটা অবজেক্টকে চিন্তা করা যায়, কিন্তু আমাদের কাজের জন্য এই দুইটি অবজেক্ট যথেষ্ট। তাই যে যে অবজেক্ট পেলাম তাঁদের  ক্লাসের নামকরণ করি, Person , Address। 
এবার এটি ডিজাইন করি। বুঝতে চেষ্টা করি, আমি ক্লাসগুলোর কি কি বৈশিষ্ট্যকে উপস্থাপন করতে চাই, সে অনুযায়ী ডিজাইন করি। ডিজাইন করলে নিচের চিত্রটির মত দাঁড়ায় -


 এখানে Person, Address নামের দুইটি ক্লাসের দুইটি অবজেক্টের(Person, Address) মধ্যকার সম্পর্ককেও তুলে ধরা হয়েছে, এই ডায়াগ্রামটিকে Class Diagram বলে(Class to Class Relationship)।
ক্লাসের অবজেক্ট ও ডাটাগুলো আসলে কেমন আচরণ করবে তা আমরা ক্লাস ডায়াগ্রাম ডিজাইন দিয়ে ব্যাখ্যা করব। 

এবারে কোন প্রোগ্রামিং ভাষা যেমন জাভা, সি++, পাইথন ইত্যাদি যেইসব ভাষার অবজেক্ট ওরিয়েন্টেড ফিচার রয়েছে, তাঁদের একটি দিয়ে ডিজাইন অনুযায়ী কোড লিখি। অবজেক্ট ওরিয়েন্টেড ফিচার বলতে, যেসব প্রোগ্রামিং ভাষায়, আমরা একেকটি ক্লাস গঠন করে অবজেক্ট তৈরি করে ডাটা নিতে পারব এবং সবচেয়ে গুরুত্বপূর্ণ হচ্ছে, সেসব ভাষা OOP Principles মেনে চলবে।




এই পুরো কাজটাই অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের অংশ ।

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ধারণাটি তুলনামূলক নতুন ধারণা, এর আগে স্ট্রাকচারাল বা প্রসেডিউরাল প্রোগ্রামিং জনপ্রিয় ছিল। কিন্তু আমরা কেন অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ব্যবহার করব?

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





এছাড়াও অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের কিছু বৈশিষ্ট্য রয়েছে যা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং প্রিন্সিপলস(OOP Principles) নামে পরিচিত, এই সুবিধাগুলো এই ধারণা প্রবর্তনের আগে পাওয়া যেত না। এখানে সেগুলো ব্যাখ্যা করা হয়েছে।

তথ্যসূত্রঃ গুগল, জাভা প্রোগ্রামিং - ডেইটেল এন্ড ডেইটেল
ছবিসূত্রঃ গুগল
ডায়াগ্রামঃ লেখক

পরামর্শ বা প্রশ্নঃ dipchakraborty71@gmail.com

Comments

Post a Comment

Popular posts from this blog

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং - ২

শেষ আর্টিকেলে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং কি এবং কেন প্রয়োজন তাঁর  আলোচনা করার চেষ্টা করা হয়েছে। একটি অবজেক্ট ওরিয়েন্টেড ডিজাইন  কেমন হতে পারে সেটি দেখানো হয়েছিল। সেগুলো যখন আমরা কোন  প্রোগ্রামিং ল্যাংগুয়েজে কোড লিখে ইমপ্লিমেন্ট করব , তখন আমাদেরকে নতুন  কিছু কনসেপ্টের আশ্রয় নিতে হচ্ছে যেমন ক্লাস , মেথড , ইন্টারফেস ইত্যাদি। ক্লাসের কাজ কি ? ক্লাস হচ্ছে আমরা যেই অবজেক্টটার কথা চিন্তা করলাম , তাঁর একটা ব্লুপ্রিন্ট  বলতে পারি। ইন্টারে পড়ে আসা প্রাণীদের শ্রেণীবিন্যাসের সাথে এর  সামঞ্জস্যতা রয়েছে। যেমন আমি বলছি , মানুষ মাম্মালিয়া ক্লাসের অন্তর্ভুক্ত।  অর্থাৎ মাম্মালিয়া ক্লাসের অন্য প্রাণীদের সাধারণ বৈশিষ্ট্যগুলি অবশ্যই মানুষের  মধ্যে থাকবে। ক্লাসটা নির্ধারণ করে দিচ্ছে তাঁর অন্তর্গত প্রাণীদের কি কি  বৈশিষ্ট্য থাকবে। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়েও ব্যাপারটা তাই।  আমি একটি ক্লাস তৈরি করে যখন ঐ ক্লাসের অবজেক্ট তৈরি করছি , তখন  ক্লাসের ডিফাইনকৃত বৈশিষ্ট্যগুলিই ঐ অবজেক্টে বিদ্যমান থাকবে। মেথডে...

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-এ এবস্ট্রাকশন

এবস্ট্রাকশনঃ এবস্ট্রাকশন মানে হচ্ছে বিমূর্তন বা পরম কোন কিছুকে বোঝায়। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ে এবস্ট্রাক্ট ক্লাস ব্যবহার করে আমরা অনেকগুলি ক্লাসের কোন সাধারণ বৈশিষ্ট্যকে ধারণ করতে পারি। ঐ ক্লাসে কমন মেথড লিখে অন্যান্য ক্লাসে ব্যবহার করা যাবে। ধরা যাক, আমরা বিভিন্ন প্রাণীর বৈশিষ্ট্য নিয়ে কাজ করব। বেশিরভাগ প্রাণী মুখ দিয়ে শব্দ করে, হাঁটতে পারে এটা তাঁদের সাধারণ বৈশিষ্ট্য। কিন্তু সবাই একভাবে হাঁটেনা, শব্দ করেনা। সেগুলো আলাদা করে আমরা মেথড ইমপ্লিমেন্ট বা ওভাররাইড করে বৈশিষ্ট্য প্রদান করতে পারব। এবস্ট্রাক্ট ক্লাস লিখে, অন্য ক্লাস দিয়ে inherit করে মেথড override করে। এবস্ট্রাক্ট ক্লাস এমন একটি ক্লাস যার করা যায় না, অর্থাৎ new কিওয়ার্ড দিয়ে নতুন অবজেক্ট খোলা যাবেনা, কিন্তু ইনহেরিট করা যাবে অর্থাৎ extends করা যাবে। এবস্ট্রাক্ট ক্লাসে কোন মেথডের বডি থাকতে পারে, ভ্যারিয়েবলও রাখা যেতে পারে।   অথবা, ইন্টারফেস তৈরি করে, অন্য ক্লাসে ইমপ্লিমেন্ট করতে হবে। ঐ ক্লাসে অবশ্যই ইন্টারফেসের মেথডগুলির বডির কোড লিখতে হবে। ইন্টারফেসে শুধু মেথড ছাড়া কিছু রাখা যাবেনা, কোন মেথ...