Skip to main content

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

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

এই কোডে সমস্যা কি হতে পারে? যেকোন ক্লাস থেকেই এই ক্লাসের ভ্যারিয়েবলগুলো এই ক্লাসের অবজেক্ট খুলে এক্সেস করা যাবে। অর্থাৎ এই ক্লাসের কোন ডেটার কোন কন্ট্রোলই নাই।
ওইদিকে দুর্নীতিবাজ রহিম এর সুযোগ নিয়ে একটি অকাজ করল। একজন ইউজারের ডিপোজিটে আজগুবি এক এমাউন্ট বসিয়ে দিল।

ওকে ঠেকাতে করিম সবগুলো ভ্যারিয়েবল প্রাইভেট করে দিল, ডেটা হাইড করল। এবার আর এমন দুর্নীতি করা যাবে না! কিন্তু সমস্যা হচ্ছে, তাহলে যে রহিম কাজও করতে পারবেনা, ভ্যালিড ডেটা পাস করতে দিতেই হবে!
এর সমাধান দিচ্ছে, getter এবং setter মেথড আইডিয়া। করিম লজিক ঠিক করল,আজগুবি কোন এমাউন্ট এলে ভ্যালু এসাইনই করতে দিবেনা! অর্থাৎ এই ক্লাসের কাজকর্ম এডমিন করিমই ঠিক করছে, কোন ডেটা কিভাবে এক্সেস করা যাবে, কোনটা যাবেনা।
রহিমের যদি ভ্যালু এসাইন করতে হয়, তবে এই মেথডগুলো ব্যবহার করেই করতে হবে। ডেটা প্রাইভেট থাকায় সে এমনি এমনি এক্সেস পাচ্ছেনা, এক্সেস করতে গেলে null পাবে।

এই কাজটাকেই বলে ইনক্যাপসুলেশন, যেখানে ডেটা অন্য ক্লাসের কাছ থেকে হাইড করে নিরাপদে রাখছি।
OOP-তে সবসময়ই data manipulation এর ক্ষেত্রে data private রেখে getter(), setter() দিয়ে এক্সেস করা অর্থাৎ encapsulation maintain করা best practice।

Comments

Popular posts from this blog

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

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

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

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

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

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