meaning - what is encapsulation in java




Encapsulation বনাম বিমূর্তন? (9)

encapsulation বিমূর্ততা একটি অংশ বা আমরা বিমূর্তকরণ এর একটি উপসেট বলতে পারেন

তারা বিভিন্ন ধারণা।

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

    যেমন একজন ব্যক্তির জন্য: আপনি প্রথম এবং শেষ নাম এবং এসএসএন রাখতে সিদ্ধান্ত নেন। বয়স, উচ্চতা, ওজন ইত্যাদি অপ্রাসঙ্গিক হিসাবে উপেক্ষা করা হয়।

    আপনার নকশা শুরু হয় যেখানে বিমূর্তন।

  • এনক্রিপুলেশন হল পরবর্তী ধাপ যেখানে এটি বিমূর্তকরণ প্রক্রিয়া চলাকালীন আপনি গ্রহণ করা বৈশিষ্ট্যগুলিতে উপযুক্ত অপারেশনগুলিকে স্বীকৃতি দেয়। এটি তাদের সাথে কাজ করে অপারেশন সঙ্গে তথ্য সমিতি।
    আইই তথ্য এবং পদ্ধতি একসঙ্গে bundled হয়।

এখানে encapsulation এবং বিমূর্ততা সংক্ষিপ্ত সংজ্ঞা।

বিমূর্ততা:

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

encapsulation:

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

private , public মতো সংশোধনকারীর সাথে আমরা কী অর্জন করি তাও বাইরের বিশ্বের অপ্রয়োজনীয় বিশদকে লুকিয়ে রাখে যা কিছুই না কিন্তু একটি বিমূর্ত ধারণা

সুতরাং, উপরের ব্যাখ্যা থেকে দেখানো হয় যে এনক্যাপুলেশন বিমূর্তীকরণের একটি অংশ বা আমরা এটি বিমূর্ততার একটি উপসেট বলতে পারি। কিন্তু কেন আমরা encabulation সঙ্গে এটি মোকাবেলা করতে পারে তখন encapsulation শব্দ উদ্ভাবিত হয়? আমি নিশ্চিত যে সেখানে কিছু বড় পার্থক্য থাকা উচিত যা তাদের আলাদা করে তবে নেটের বেশিরভাগ উপাদানই তাদের উভয়ের জন্য প্রায় একই জিনিস বলে।

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

আপডেট: - 5 বছর পর আমি আমার নিজের উত্তর দিয়ে এসেছি যা এই পোস্টে এবং নীচের দিকগুলির উত্তরগুলির উপর নির্ভর করে

  1. বিমূর্তকরণ এবং encapsulation মধ্যে পার্থক্য?
  2. encapsulation বনাম abstraction বাস্তব বিশ্বের উদাহরণ

5 বছর পর আমার নিজের প্রশ্নের উত্তর দিলেও মনে হয় এটি আরও বিশদ প্রয়োজন

বিমূর্ততা:

প্রযুক্তিগত সংজ্ঞা: - বিমূর্তন অপ্রয়োজনীয় বিবরণ (জটিল বা সহজ) লুকানোর একটি ধারণা এবং শুধুমাত্র বস্তুর প্রয়োজনীয় বৈশিষ্ট্যগুলি দেখায়। এখানে একটি বাস্তবায়ন এখানে শুধু একটি ধারণা নেই

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

এমনকি যখন আমি বলি আমার কোম্পানির কিছু মাধ্যম / যন্ত্র দরকার যাতে কর্মীরা ভয়েস কলের মাধ্যমে গ্রাহকের সাথে সংযোগ স্থাপন করতে পারে। তারপরও আমি বিমূর্ত কথা বলছি কিন্তু কিছুটা নিম্ন স্তরে ডিভাইস / মাধ্যম ফোন বা স্কাইপ বা অন্য কিছু ইত্যাদি হতে পারে

এখন যখন আমি বলি আমার কোম্পানির কিছু ফোন দরকার যাতে কর্মীরা ভয়েস কলের মাধ্যমে গ্রাহকের সাথে সংযোগ স্থাপন করতে পারে। তারপরও আমি বিমূর্ত কথা বলছি কিন্তু কিছুটা নিম্ন স্তরে ফোন যেমন আইফোন বা স্যামসাং বা নকিয়া ইত্যাদি কোনও সংস্থার হতে পারে

এনক্যাপুলেশন: - এটি মূলত ব্যক্তিগত, জনসাধারণ, সুরক্ষিত ইত্যাদির মত সংশোধনকারীর সহায়তার সাথে বস্তুর রাষ্ট্র (তথ্য) গোপন করার বিষয়ে আমরা কেবল রাষ্ট্র প্রয়োজনের মাধ্যমেই প্রকাশ করি।

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

সুতরাং আইফোনটি আসলে এখানে তার অবস্থান / তথ্য গোপন করার কৌশল হিসাবে এনক্যাপুলেশন ব্যবহার করে এবং এটি প্রকাশ করা মাত্র যেগুলি প্রকাশ করা উচিত তা প্রকাশ করে। সুতরাং উভয় বিমূর্ততা এবং encapsulation কিছু অপ্রয়োজনীয় বিবরণ লুকিয়ে কিন্তু ধারণা স্তর এ encapsulation আসলে বাস্তবায়ন স্তরে

এই পোস্ট এবং নীচের বেশী উত্তর উপর ভিত্তি করে Gist হয়

  1. বিমূর্তকরণ এবং encapsulation মধ্যে পার্থক্য?
  2. encapsulation বনাম abstraction বাস্তব বিশ্বের উদাহরণ

Encapsulation বাইরের সত্তা থেকে বস্তুর অভ্যন্তরীণ আচরণ / দৃষ্টান্ত ভেঙ্গে রক্ষা করে। সুতরাং, সরবরাহ করা হচ্ছে এমন তথ্য নিশ্চিত করার জন্য একটি নিয়ন্ত্রণ প্রদান করা উচিত যা অভ্যন্তরীণ সিস্টেম / বস্তুর অভ্যন্তরীণ সিস্টেমটিকে তার অস্তিত্বের বেঁচে থাকার জন্য ক্ষতিগ্রস্ত করবে না।

ভাল উদাহরণ, ডিভাইডার এমন একটি শ্রেণী যা দুটি দৃষ্টান্তের পরিবর্তনশীল লভ্যাংশ এবং ডিভাইজার এবং একটি পদ্ধতি পেয়েছে বিভক্ত ভ্যালু।

যদি আপনি divisor 0 সেট করা হয় তাহলে অনুগ্রহ করে মনে করতে পারেন, অভ্যন্তরীণ সিস্টেম / আচরণ (getDivided) বিরতি হবে।

সুতরাং, একটি পদ্ধতি মাধ্যমে ব্যতিক্রম নিক্ষেপ দ্বারা বস্তুর অভ্যন্তরীণ আচরণ রক্ষা করা যেতে পারে।


আমি এটা বুঝতে পেরেছি:

বস্তু ভিত্তিক প্রোগ্রামিং ইন, আমরা ক্লাস বলা কিছু আছে। কি জন্য তারা? তারা কিছু রাষ্ট্র সংরক্ষণ এবং সেই রাষ্ট্র পরিবর্তন করার জন্য কিছু পদ্ধতি সংরক্ষণ করতে হয় অর্থাৎ, তারা রাষ্ট্র এবং তার পদ্ধতিগুলি সংহত করছে।

এটা (বর্গ) নিজের বা তার বিষয়বস্তু দৃশ্যমানতা সম্পর্কে যত্ন না। আমরা যদি রাষ্ট্র বা কিছু পদ্ধতি গোপন করতে পছন্দ করি তবে এটি তথ্য লুকানো

এখন, একটি উত্তরাধিকার দৃশ্যকল্প নিতে। আমাদের একটি বেস বর্গ এবং প্রাপ্ত কয়েকটি (উত্তরাধিকারী) ক্লাস আছে। সুতরাং, বেস ক্লাস এখানে কি করছেন? এটা derived ক্লাস থেকে কিছু জিনিস বিমূর্ত করা হয়।

তাদের সব আলাদা, ঠিক আছে? কিন্তু, আমরা ভাল বস্তু ভিত্তিক প্রোগ্রাম লিখতে তাদের মিশ্রিত করা। আশা করি এটা সাহায্য করবে :)


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


বিমূর্তন একটি খুব সাধারণ শব্দ, এবং সফ্টওয়্যার মধ্যে বিমূর্ততা বস্তু ভিত্তিক ভাষা সীমাবদ্ধ নয়। একটি অভিধান সংজ্ঞা: "কংক্রিট বাস্তবতা, নির্দিষ্ট বস্তু, বা প্রকৃত ঘটনা ছাড়া, সাধারণ মানের বা চরিত্রগত হিসাবে কিছু বিবেচনা করার কাজ"।

অ্যাসেম্বলি ভাষাটি মেশিন কোডের বিমূর্ততা হিসাবে বিবেচিত হতে পারে - সমাবেশটি মেশিন কোডের প্রয়োজনীয় বিবরণ এবং কাঠামো প্রকাশ করে, তবে ব্যবহৃত অপপডগুলি, মেমরির কোডের লেআউট, যাম্পিং করতে গিয়ে চিন্তা করতে আপনাকে মুক্ত করে। সঠিক ঠিকানা, ইত্যাদি

আপনার অপারেটিং সিস্টেমের API অন্তর্নিহিত মেশিনের একটি বিমূর্ততা। আপনার কম্পাইলার বিমূর্ততার স্তর সরবরাহ করে যা আপনাকে সমাবেশ ভাষার বিশদ থেকে রক্ষা করে। আপনার অপারেটিং সিস্টেমে নির্মিত টিসিপি / আইপি স্ট্যাক একটি নেটওয়ার্কের উপরে বিট প্রেরণের বিবরণকে বাদ দেয়। যদি আপনি কাঁচা সিলিকন থেকে সমস্ত পথে যান তবে আপনার সিপিএম ডিজাইনাররা "ডায়োডস" এবং "ট্রানজিস্টরস" পদে লিখিত সার্কিট ডায়াগ্রামগুলি ব্যবহার করে, যা ইলেকট্রনগুলি সেমিকন্ডাক্টর স্ফটিকের মাধ্যমে কিভাবে ভ্রমণ করে তা বর্জন করে।

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

তুলনায়, "encapsulation" একটি খুব নির্দিষ্ট এবং সীমিত শব্দ। এই প্রশ্নটির অন্য কিছু উত্তর ইতিমধ্যেই এর জন্য ভাল সংজ্ঞা দিয়েছে।


Encapsulation বিমূর্ততা অংশ হিসাবে ব্যবহৃত একটি কৌশল। Encapsulation বস্তুর অবস্থা বোঝায় - বস্তু তাদের রাষ্ট্র encapsulate এবং বাইরে থেকে লুকান; ক্লাসের বাইরের ব্যবহারকারীরা তার পদ্ধতির মাধ্যমে এটির সাথে ইন্টারঅ্যাক্ট করেন, তবে সরাসরি শ্রেণী বিভাগ অ্যাক্সেস করতে পারবেন না। সুতরাং শ্রেণী তার রাষ্ট্র সম্পর্কিত বাস্তবায়ন বিবরণ দূরে abstracts

বিমূর্তন একটি সাধারণ শব্দ, এটি উপশ্রেণীভুক্ত (অন্যদের মধ্যে) দ্বারা অর্জন করা যেতে পারে। উদাহরণস্বরূপ, স্ট্যান্ডার্ড লাইব্রেরির ইন্টারফেস List আইটেমগুলির ক্রম অনুসারে বিমূর্ত, তাদের অবস্থান অনুসারে সূচীকৃত, LinkedList কংক্রিট উদাহরণগুলি একটি LinkedList বা LinkedList । যে List সেটির বিস্তারিত বিশদের উপর একটি List সারাংশের সাথে যোগাযোগ করে এমন কোড।

অন্তর্নির্ধারণ দ্বারা অন্তর্নিহিত রাষ্ট্র গোপন না করে অবাঞ্ছিতভাবে প্রায়শই সম্ভব হয় না - যদি কোন শ্রেণী তার অভ্যন্তরীণ অবস্থা প্রকাশ করে তবে এটি তার অভ্যন্তরীণ কাজগুলি পরিবর্তন করতে পারে না এবং এভাবে বিমূর্ত করা যাবে না।


দ্রষ্টব্য: আমি এই শেয়ার করছি। এর অর্থ এই নয় যে এখানে উত্তরের উত্তর নেই তবে সহজেই বোঝা যায়।

উত্তর:

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

একইভাবে, আমরা কি শ্রেণীতে যাব? বিমূর্তকরণ এখানে প্রয়োগ করা হয়। এখানে কি প্রয়োজন এবং একটি overdose কি হবে? তারপর আমরা ক্লাস থেকে কিছু তথ্য কাটা। এই প্রক্রিয়া বিমূর্ততা প্রয়োগ করা হয়।

যখন আমরা encapsulation এবং বিমূর্ততা মধ্যে পার্থক্য চাইতে, আমি বলতে হবে, encapsulation একটি ধারণা হিসাবে বিমূর্ততা ব্যবহার করে। সুতরাং তারপর, এটা শুধুমাত্র encapsulation হয়। না, বিমূর্ততা এমনকি উত্তরাধিকার এবং পলিমারফিজমের অংশ হিসাবে প্রয়োগ করা একটি ধারণা।

এই বিষয়ে আরো ব্যাখ্যা জন্য এখানে Go


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

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

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





oop