"ডেটা লুকানো" এবং "এনক্যাপসুলেশন" এর মধ্যে পার্থক্য কী?


29

আমি "অনুশীলনে জাভা সম্মতি" পড়ছি এবং সেখানে বলা হয়েছে: "ভাগ্যক্রমে, একই অবজেক্ট-ওরিয়েন্টেড কৌশলগুলি যা আপনাকে সুসংগঠিত, রক্ষণাবেক্ষণযোগ্য ক্লাস - যেমন এনক্যাপসুলেশন এবং ডেটা লুকিয়ে রাখতে সহায়তা করে - আপনাকে থ্রেড-সেফ তৈরি করতে সহায়তা করে ক্লাস। "

সমস্যা # 1 - আমি ডেটা লুকানোর বিষয়ে কখনও শুনিনি এবং এটি কী তা জানি না।

সমস্যা # 2 - আমি সবসময়ই ভেবেছিলাম যে এনক্যাপসুলেশনটি প্রাইভেট বনাম পাবলিক ব্যবহার করছে, এবং এটি আসলে ডেটা লুকানো।

আপনি কী ডেটা লুকিয়ে রাখছেন এবং এটি কীভাবে এনক্যাপসুলেশন থেকে আলাদা তা ব্যাখ্যা করতে পারেন?


2
কোড সম্পূর্ণ দ্বিতীয় সংস্করণ পড়ুন । এটি আপনার অনেক প্রশ্নের উত্তর দেবে।
শিপলু মোকাদ্দিম


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

উত্তর:


19

ডেটা এবং তথ্য গোপন করা একটি বিস্তৃত ধারণা, কম্পিউটার বিজ্ঞান এবং সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ে পাওয়া যায়। এটি এই সত্যটি বোঝায় যে একটি কম্পিউটার প্রোগ্রামের যে অংশগুলি পরিবর্তন হতে পারে সেগুলি অবশ্যই অন্যান্য মডিউলগুলি / ক্লায়েন্টের কাছ থেকে অ্যাক্সেসযোগ্য হবে না।

এনক্যাপসুলেশন এমন একটি শব্দ যা অবজেক্ট-ওরিয়েন্টেড দৃষ্টান্তে পাওয়া যায় এবং ডেটাটি ব্যক্তিগত ক্ষেত্রে রাখা এবং কেবলমাত্র পদ্ধতির মাধ্যমে এটিকে সংশোধন করে।

সুতরাং এনক্যাপসুলেশনটি অবজেক্ট-ওরিয়েন্টেড সিস্টেমে লুকিয়ে থাকা ডেটা অর্জনের একটি উপায় হিসাবে দেখা যেতে পারে


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

লেখকরা ডেটা লুকানো এবং তথ্য গোপনের ক্ষেত্রে এই ধারণাটি থেকে একটি পার্থক্য তৈরি করেন যে ডেটা লুকানো কেবলমাত্র ডেটা স্ট্রাকচারগুলি গোপন করে - ব্যক্তিগত ক্ষেত্রগুলি - যখন তথ্য গোপন করা কেবলমাত্র ইন্টারফেসের মাধ্যমে সম্পন্ন যোগাযোগের encapsulate বাস্তবায়ন বিশদ (উদাহরণস্বরূপ ব্যবহৃত অ্যালগরিদম) বোঝাতে পারে।
m3th0dman

2
আপনার অন্যটি না থাকাতে একটি থাকতে পারে - পাইথনটি দেখুন, যেখানে কোনও তথ্য গোপন নেই (কোনও ব্যক্তিগত বা সুরক্ষিত বৈশিষ্ট্যের মতো কোনও জিনিস নেই)।
লেটি

@ লাট্টিওয়্যারের বিষয়টি অত্যন্ত সত্য এবং গুরুত্বপূর্ণ। কারও কাছে কোনও আড়াল না করেই (আপনার সংজ্ঞা অনুসারে, যা আমি এখানে বর্ণনা করছি তার কারণেই আমি আপত্তি জানায়) এনক্যাপসুলেশন থাকতে পারে, অর্থাত্ প্রতিটি সদস্যের জন্য একটি তুচ্ছ গিটার এবং সেটার অন্ধভাবে প্রকাশ করে। এটি কোনও কিছু আড়াল করে না এবং কোনও কিছুকে আটকাবে না, তবে চিঠির কাছে থাকা encapsulation এর সাধারণ সংজ্ঞা পূরণ করে।

1
এনক্যাপসুলেশন ব্যক্তিগত ক্ষেত্রে ডেটা রাখে না, এটি আরও তথ্য গোপন করে। এনক্যাপসুলেশন, একটি সাধারণ উপায়ে, তথ্য / উপাত্ত এবং পদ্ধতিগুলি একটি শ্রেণিতে একসাথে রাখার ধারণা।
nbro

6

এনক্যাপসুলেশন এবং ডেটা লুকানো সম্পর্কিত পদ। এটি বোঝা গুরুত্ত্বপূর্ণ যে, তারা সম্পর্ক উঠা বিমূর্ততাবুচ এট অল। মধ্যে অবজেক্ট ওরিয়েন্টেড অ্যাপ্লিকেশন সঙ্গে এনালিসিস এবং ডিসাইন ব্যাখ্যা করে,

বিমূর্ততা এবং এনক্যাপসুলেশন পরিপূরক ধারণা: বিমূর্ততা একটি বস্তুর পর্যবেক্ষণযোগ্য আচরণের উপর দৃষ্টি নিবদ্ধ করে, অন্যদিকে এনক্যাপসুলেশন এই আচরণের জন্ম দেয় এমন বাস্তবায়নকে কেন্দ্র করে। এনক্যাপসুলেশনটি প্রায়শই তথ্য গোপনের মাধ্যমে অর্জন করা হয় (কেবল ডেটা লুকানো নয়) যা কোনও প্রয়োজনীয় সামগ্রীর গোপনীয়তা লুকানোর প্রক্রিয়া যা এর প্রয়োজনীয় বৈশিষ্ট্যগুলিতে অবদান রাখে না; সাধারণত, কোনও বস্তুর কাঠামো লুকানো থাকে, পাশাপাশি এর পদ্ধতিগুলি বাস্তবায়িত হয়।


5

একটি বর্গ তৈরির মধ্যে এনকেপসুলেশন ধারণা অন্তর্ভুক্ত। আপনি যখন ক্লাস তৈরি করেন আপনি ক্লাসের ভিতরে ডেটা এবং আচরণ রাখেন এবং ক্লাসটি একটি ইউনিটে পরিণত হয় যা আমরা একটি বস্তু বলি। সুতরাং ডেটা লুকানো এনক্যাপসুলেশনের অংশ।


4

উইকিপিডিয়া থেকে :

প্রোগ্রামিং ল্যাঙ্গুয়েজে এনক্যাপসুলেশন দুটি সম্পর্কিত তবে স্বতন্ত্র ধারণার মধ্যে একটি এবং আবার কখনও কখনও এর সংমিশ্রণে ব্যবহৃত হয়:

  • অবজেক্টের কিছু উপাদানগুলিতে অ্যাক্সেস সীমাবদ্ধ করার জন্য একটি ভাষা প্রক্রিয়া
  • একটি ভাষা গঠন যা সেই ডেটাতে অপারেটিং পদ্ধতি (বা অন্যান্য ফাংশন) দিয়ে ডেটা বান্ডিলিংয়ে সহায়তা করে

কিছু প্রোগ্রামিং ল্যাঙ্গুয়েজ গবেষক এবং শিক্ষাবিদগণ প্রথম অর্থ একা বা দ্বিতীয়টির সাথে মিলিয়ে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের একটি বিশিষ্ট বৈশিষ্ট্য হিসাবে ব্যবহার করেন, যখন অন্যান্য প্রোগ্রামিং ভাষাগুলি লাক্ষিক ক্লোজারগুলি সরবরাহ করে এনক্যাপসুলেশনকে ভাষার অরথোগোনালের একটি বৈশিষ্ট্য হিসাবে দেখায়।

দ্বিতীয় সংজ্ঞাটি এই সত্য দ্বারা অনুপ্রাণিত হয় যে অনেকগুলি ওওপি ভাষায় উপাদানগুলি গোপন করা স্বয়ংক্রিয় নয় বা ওভাররাইড করা যেতে পারে; সুতরাং, তথ্য গোপনীয়তা পৃথক ধারণা হিসাবে সংজ্ঞায়িত করা হয় যারা দ্বিতীয় সংজ্ঞা পছন্দ করেন।


আপনার উত্তর দেওয়ার জন্য ধন্যবাদ. একটি ফলোআপ প্রশ্নসমূহ: 1) জাভা প্রোগ্রামিং ভাষার এমন কোনও সুবিধা রয়েছে যা এনক্যাপসুলেশন সম্পর্কিত দ্বিতীয় ধারণাটি বোঝায়? 2) ডেটা লুকিয়ে রাখার বিষয়টি কেন ওভাররাইড করা আমি বুঝতে পারি না। যেমন জাবাতে আপনি প্রতিবিম্বের মাধ্যমে যে কোনও ক্ষেত্রে (সরকারী বা ব্যক্তিগত) অ্যাক্সেস করতে পারেন।
dhblah

@ সফটওয়্যার এনজিনিয়ারিং লার্নার: উত্স কোড গঠন হিসাবে ক্লাসগুলি দ্বিতীয় ধারণাটিকে উপস্থাপন করে। তথ্য গোপনের ক্ষেত্রে, বক্তব্যটি হ'ল ডেটার পরিধি সীমাবদ্ধ করা প্রায়শই নির্দিষ্ট এবং পৃথক ভাষা ব্যবস্থার উপর ভিত্তি করে।
মাইকেল বর্গওয়ার্ট

2

এগুলি প্রায়শই আলোচনার জন্য আন্তঃব্যবহারযোগ্যভাবে ব্যবহৃত হয় এবং প্রায়শই আমি মনে করি তারা একই উদ্দেশ্য অর্জনের জন্য একসাথে কাজ করেছে এবং নিম্নলিখিতগুলি সম্পূর্ণ সঠিক নাও হতে পারে তবে যদি কোনও পার্থক্য করা দরকার হয় তবে এটি কিছু অর্থপূর্ণ পার্থক্য সরবরাহ করতে পারে:

এনক্যাপসুলেশন সম্পর্কে কথা বলার সময় প্রায়শই এটি একটি প্রক্রিয়াগত / কার্যকরী প্রক্রিয়া হিসাবে প্রয়োগ করা হয়। অন্তর্নিহিত রাষ্ট্রের জন্য কিছু প্রহরী রয়েছে এবং প্রহরীর মাধ্যমে অ্যাক্সেসের জন্য নির্দিষ্ট প্রোটোকলগুলি অ্যাক্সেস দেওয়ার জন্য অনুসরণ করা প্রয়োজন (পড়ুন বা পছন্দসই রাষ্ট্রটি পরিবর্তন করুন)। এনক্যাপসুলেশন অ্যাক্সেসের কারণে পার্শ্ব-প্রতিক্রিয়া হওয়ার সুযোগও দেয় (যেমন ক্যাসকেডিং রাষ্ট্র পরিবর্তন, বা নোটিফিকেশন / ইভেন্ট উত্থাপন / আগ্রহের জিনিসটি পড়ার সময় বা পরিবর্তিত হলে সংকেত জারি করা) যাতে ফলো-আপ ক্রিয়াকলাপ শুরু করা যেতে পারে। আবার, আমি প্রায়শই এনক্যাপসুলেশনকে একটি ধারণা হিসাবে ভাবি যা এমন একটি প্রক্রিয়া হিসাবে প্রয়োগ করা হয়।

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


0

এগুলি প্রায়শই হতে পারে, সাধারণত পরিবর্তিত হয় used তবে উপরের বুচের উক্তিটি নোট করুন, "ইনক্যাপসুলেশন প্রায়শই তথ্য গোপনের মাধ্যমে অর্জন করা হয় ..." অর্থাত্ প্রায়শই, তবে সর্বদা সর্বদা নয় not

দ্রষ্টব্য যে পাইথন ক্লাসগুলিতে রোলিং ডেটা আপ করতে দেয় তবে ব্যক্তিগত ভেরিয়েবলগুলিকে অনুমতি দেয় না। সুতরাং এটি বলা যেতে পারে যে পাইথন ডেটা গোপন না করে এনক্যাপসুলেশন সরবরাহ করে।

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


0

ওওতে , এনক্যাপসুলেশন হ'ল যেখানে কোনও বস্তুর মধ্যে তথ্য রাখা হয়। উদাহরণস্বরূপ, একজনের Personএক nameএবং ব্যক্তির ক্লায়েন্ট রয়েছে (অর্থাত্ আপনি) জানেন যে ব্যক্তি পাবলিক ফিল্ড বা অ্যাকসেসর পদ্ধতির মাধ্যমে একটি নাম ধারণ করে। এবং, আশা করি, আপনার কিছু বিশ্বব্যাপী নামের ইত্যাদির নামগুলিও রাখার দরকার নেই, তাই নিয়ন্ত্রণহীন স্প্যাগেটি কোড এড়ানোর জন্য এটি একটি বড় পদক্ষেপ। তবে ক্লায়েন্টকে এখনও কীভাবে ব্যক্তি নামগুলি পরিচালনা করে তার কিছু জানতে হবে: উদাহরণস্বরূপ স্থান বা কমা সীমিত?

ডেটা হিডিং এমন যেখানে Personএকটি নাম ক্ষেত্র রয়েছে, তবে, অন্তত তত্ত্বে, কেউ জানে না । ক্ষেত্রটি কোনও পাবলিক অ্যাক্সেসর পদ্ধতি ছাড়াই ব্যক্তিগত। ক্লায়েন্টরা কোনও ডাটাবেস রেকর্ড, এক্সএমএল, এইচটিটিপি পোস্ট থেকে যে কোনও নাম পাস করতে পারে, তবে ব্যক্তি কীভাবে নামটি পরিচালনা করে তার অভ্যন্তরীণ কাজটি "ব্ল্যাক বক্স" are ভবিষ্যতের ব্যক্তির বাস্তবায়নগুলি পরিবর্তন করতে পারে, উদাহরণস্বরূপ, একটি firstNameএবং এ থাকাতে স্যুইচ করতে lastName

একটি আদর্শ বিশ্বে ডেটা আড়াল করা এনক্যাপসুলেশনের চেয়ে উন্নত তবে সমস্ত দুনিয়া আদর্শ নয়। :-)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.