এগুলির প্রায় সমস্তই এনক্যাপসুলেশনের একটি মৌলিক ভুল বোঝাবুঝি এবং এটি কীভাবে প্রযোজ্য তা দেখায়।
আপনি যে প্রাথমিক প্রতিক্রিয়াটি এনক্যাপসুলেশনটি ভঙ্গ করেছিলেন তা ঠিক ভুল। আপনার অ্যাপ্লিকেশনটিতে কেবল বৃদ্ধি / হ্রাস বা যুক্ত / অপসারণের পরিবর্তে ফ্রিজে পনিরের মান নির্ধারণের প্রয়োজন হতে পারে। এছাড়াও, এটি শব্দার্থবিজ্ঞানের বিষয় নয়, আপনি যাকেই ডাকেন তা বিবেচনাধীন নয়, যদি আপনার অ্যাক্সেস এবং / অথবা বৈশিষ্ট্যগুলি পরিবর্তনের প্রয়োজন হয় তবে আপনি এগুলি সরবরাহ করে এনক্যাপসুলেশনটি ভাঙ্গেন না। পরিশেষে, এনক্যাপসুলেশন আসলে "লুকিয়ে থাকা" সম্পর্কে নয়, এটি রাষ্ট্র এবং মূল্যবোধগুলিতে অ্যাক্সেস নিয়ন্ত্রণ করার বিষয়ে যা শ্রেণীর বাইরে প্রকাশ্যে বা কারসাজি করা উচিত নয়, যা তাদের দেওয়া উচিত এবং যে কাজটি অভ্যন্তরীণভাবে উপলব্ধ করা উচিত তা সম্পাদন করার সময়।
যখন কোনও মান পেতে বা সেট করার বৈধ প্রয়োজন হয় তখন একজন গিটার বা সেটার এনক্যাপসুলেশনটি ভাঙবে না। এই কারণেই পদ্ধতিগুলি জনসাধারণ্যে করা যায় can
এনক্যাপসুলেশন হ'ল ডেটা এবং সেই পদ্ধতিগুলি যা সেই ডেটাটিকে সরাসরি এক যৌক্তিক স্থানে, ক্লাসে সংশোধন করে।
এই বিশেষ ক্ষেত্রে, প্রয়োগে পনিরের মান পরিবর্তন করার প্রয়োজন স্পষ্টভাবে রয়েছে। এটি কীভাবে করা হোক না কেন, get / set বা যোগ / অপসারণের মাধ্যমে যতক্ষণ পদ্ধতিগুলি ক্লাসে আবদ্ধ থাকে আপনি অবজেক্ট ওরিয়েন্টেড স্টাইলটি অনুসরণ করছেন।
স্পষ্টতার জন্য, আমি পদ্ধতিটির নাম বা লজিক্যাল এক্সিকিউশন নির্বিশেষে অ্যাক্সেস সরবরাহ করে কীভাবে এনক্যাপসুলেশনটি ভেঙে দেওয়া হয়েছে তার একটি উদাহরণ দেব।
বলুন আপনার ফ্রিজটির একটি "আজীবন" রয়েছে, ফ্রিজটি আর কার্যকর হওয়ার আগে কেবল কয়েকটি সংখ্যক টিক্স রয়েছে (যুক্তির স্বার্থে, ফ্রিজটি মেরামত করা যায় না)। যৌক্তিকভাবে কোনও ব্যবহারকারীর (বা আপনার অ্যাপ্লিকেশন বাকী) এই মানটি পরিবর্তন করতে সক্ষম হওয়ার কোনও উপায় নেই। এটি ব্যক্তিগত হতে হবে। এটি কেবলমাত্র "ইস ওয়ার্কিং" নামে পরিচিত একটি আলাদা পাবলিক অ্যাট্রিবিউট বলার মাধ্যমেই দৃশ্যমান হবে। যখন আজীবন মেয়াদ শেষ হয়, অভ্যন্তরীণভাবে ফ্রিজে সেটগুলি মিথ্যাতে কাজ করে।
আজীবন গণনা করা এবং ইশওয়ার্কিং স্যুইচটি উল্টানো এর কার্যকারিতা সমস্ত ফ্রিজের অভ্যন্তরীণ, বাইরের কিছুই প্রসেসকে প্রভাবিত করতে সক্ষম হতে পারে না। isWorking কেবল দৃশ্যমান হওয়া উচিত, সুতরাং একটি প্রাপ্তকারী এনক্যাপসুলেশনটি ভঙ্গ করে না। তবে আজীবন প্রক্রিয়ার উপাদানগুলির জন্য অ্যাক্সেসর যুক্ত করা আপনার এনক্যাপসুলেশনটি ভেঙে দেবে।
বেশিরভাগ জিনিসের মতো, এনক্যাপসুলেশনের সংজ্ঞা আক্ষরিক নয়, এটি আপেক্ষিক। আপনি কি ক্লাসের বাইরে এক্স দেখতে সক্ষম হবেন? আপনি কি Y পরিবর্তন করতে সক্ষম হবেন? আপনার ক্লাসে এখানে যা কিছু আছে তা প্রয়োগ করা বা একাধিক ক্লাসে কার্যকারিতা ছড়িয়ে আছে?
putCheese
ফ্রিজে পনির যোগ করতেtakeCheese
হবে এবং এটিকে সরিয়ে ফেলবে - এগুলি (উচ্চ স্তরের) ডোমেন-ভিত্তিক বিমূর্ততা নয়, বস্তু ক্ষেত্রের গেটর এবং সেটটার (যা (নিম্ন স্তরের) কম্পিউটার প্রোগ্রামিং বিমূর্ততা) এর চেয়ে বেশি।