Skip to main content

Posts

Showing posts with the label incapsulation

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

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