ওওপি এনক্যাপসুলেশন (Encapsulation)
এনক্যাপসুলেশন মানে হলো ক্লাসের তথ্য বা ডাটাকে একটি বাক্সের ভেতর আটকে রাখা এবং সুরক্ষার জন্য বাইরে থেকে সরাসরি প্রবেশ বন্ধ করা। একে ডাটা হাইডিং বা তথ্য গোপন করাও বলা হয়। ওওপি-তে এটি অত্যন্ত গুরুত্বপূর্ণ কারণ এটি আপনার সফটওয়্যারের ডাটাকে ভুলভাবে পরিবর্তন হওয়া থেকে বাঁচায়।
যুক্তিতে আমরা বন্ধ (Private) কিউওয়ার্ড ব্যবহার করে ডাটা লুকিয়ে ফেলি। এর ফলে ক্লাসের বাইরের কেউ সরাসরি সেই ডাটা দেখতে বা বদলাতে পারে না।
১. ডাটা লুকানোর নিয়ম
নিচে একটি ব্যাংক ক্লাসের উদাহরণ দেওয়া হলো যেখানে ব্যালেন্স লুকানো হয়েছে।
ক্লাস ব্যাংক {
বন্ধ পূর্ণসংখ্যা ব্যালেন্স = ৫০০; // এটি বাইরে থেকে পড়া যাবে না
মুক্ত ব্যালেন্স_দেখাও() {
দেখাও "ব্যালেন্স: " >> ব্যালেন্স; // ক্লাসের ভেতরে কাজ করবে
}
}
২. গেটার ও সেটার (Getter & Setter)
যখন ডাটা 'বন্ধ' থাকে, তখন সেটি পড়া বা বদলানোর জন্য আমরা নির্দিষ্ট কিছু মেথড ব্যবহার করি। এতে আমরা ডাটা চেক করার সুযোগ পাই।
ক্লাস ইউজার {
বন্ধ পূর্ণসংখ্যা বয়স;
মুক্ত সেট_বয়স(পূর্ণসংখ্যা ব) {
যদি ব > ০ এবং ব < ১২০ {
বয়স = ব; // বয়স সঠিক হলেই কেবল সেট হবে
} নাহয় {
দেখাও "ভুল বয়স!";
}
}
}
৩. কেন এনক্যাপসুলেশন দরকার?
১. নিরাপত্তা: কেউ ইচ্ছা করে ডাটা নষ্ট করতে পারে না।
২. নিয়ন্ত্রণ: ডাটা কীভাবে পরিবর্তিত হবে তা আপনার নিয়ন্ত্রণে থাকে।
৩. ক্লিন কোড: কোড অনেক গোছানো থাকে।
বন্ধ হিসেবে রাখুন এবং সেগুলো ব্যবহারের জন্য মুক্ত মেথড তৈরি করুন।
৪. ইন-ডেপথ উদাহরণ: স্মার্ট থার্মোস্ট্যাট
তাপমাত্রা একটি নির্দিষ্ট সীমার মধ্যে রাখার লজিক:
ক্লাস থার্মোস্ট্যাট {
বন্ধ দশমিক বর্তমান_তাপমাত্রা = ২৫.০;
মুক্ত সেট_তাপমাত্রা(দশমিক ত) {
যদি ত >= ১৮.০ এবং ত <= ৩০.০ {
বর্তমান_তাপমাত্রা = ত;
দেখাও "তাপমাত্রা সেট হয়েছে: " >> ত;
} নাহয় {
দেখাও "সীমার বাইরে!";
}
}
}