Skip to main content

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

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

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

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

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

Comments

Popular posts from this blog

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

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

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

ইনহেরিটেন্সঃ ইনহেরিটেন্স অর্থ উত্তরাধিকারী। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-এ একটি ক্লাস অন্য আরেকটি ক্লাসকে ইনহেরিট করলে ঐ ক্লাস যে ক্লাসকে ইনহেরিট করেছে, সে ক্লাসের ডেটাগুলো ব্যবহার করতে পারে। উত্তরাধিকারসূত্রে পিতার সম্পত্তিপ্রাপ্তির মতই হয়ে যাচ্ছে ব্যাপারটা! তাই সুবিধার জন্য ইনহেরিট যে ক্লাসকে করা হয়েছে সে ক্লাস প্যারেন্ট ক্লাস ও যে ক্লাস ইনহেরিট করেছে সেই ক্লাস চাইল্ড ক্লাস হিসেবে বহুল ব্যবহৃত। আমিও এই নামেই ডাকছি। ইনহেরিট করার জন্য আমরা extends কিওয়ার্ডটি ব্যবহার করি। এখানে চাইন্ড ক্লাস প্যারেন্ট ক্লাসকে এক্সটেন্ড করে প্যারেন্ট ক্লাসের মেথডটি এক্সেস করতে পারছে। inheritance এর প্রকারভেদ, সিঙ্গেল লেভেল, মাল্টীলেভেল, হায়ারকিক্যাল, হাইব্রিড। সিঙ্গেল লেভেলঃ একটি প্যারেন্ট ক্লাস ও চাইল্ড ক্লাসের ডিরেক্ট সম্পর্ক।   মাল্টিলেভেলঃ প্যারেন্ট ক্লাস যদি অন্য আরেকটি ক্লাসকে ইনহেরিট করে তবে ঐ ক্লাসের সাথে চাইল্ড ক্লাসের সম্পর্ক। হায়ারকিক্যালঃ এক প্যারেন্টকে একাধিক চাইল্ড ইনহেরিট করলে হাইব্রিডঃ বাকি প্রকারভেদগুলোর মিশ্রণ এখন পর্যন্ত যা দেখলাম, তা আ...

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

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