জাভাতে এনক্যাপসুলেশন - কীভাবে এনক্যাপসুলেশন দিয়ে ওওপিগুলি মাস্টার করবেন?



জাভাতে এনক্যাপসুলেশন সম্পর্কিত এই নিবন্ধটি আপনাকে বিভিন্ন সহজ উদাহরণের সাথে বাস্তবায়ন সম্পর্কিত তথ্য গোপন করার মূল ধারণাগুলি বুঝতে সহায়তা করবে।

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

নীচে বিষয়গুলি রয়েছে, আমি এই নিবন্ধে আলোচনা করব:





আপনি এই রেকর্ডিং মাধ্যমে যেতে পারেন যেখানে আপনি উদাহরণ সহ বিশদভাবে বিষয়গুলি বুঝতে পারবেন।



অ্যালগরিদম সাজান সি ++

এনক্যাপসুলেশন পরিচিতি

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

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



জাভা-এডুরেকায় এনক্যাপসুলেশন-এনক্যাপসুলেশনজাভাতে এনক্যাপসুলেশন দ্বারা অর্জন করা যেতে পারে:

  • শ্রেণীর ভেরিয়েবলগুলি ব্যক্তিগত হিসাবে ঘোষণা করা।
  • ভেরিয়েবলের মানগুলি সংশোধন করতে ও দেখার জন্য পাবলিক সেটার এবং গেটর পদ্ধতি সরবরাহ করা।

এখন, এনক্যাপসুলেশন সম্পর্কে আরও ভাল ধারণা পেতে কোডটি দেখুন:

পাবলিক ক্লাস স্টুডেন্ট {প্রাইভেট স্ট্রিংয়ের নাম পাবলিক স্ট্রিং নাম পাবলিক স্ট্রিং getName () {রিটার্ন নাম} পাবলিক শূন্য সেট সেট ame this.name = নাম}} ক্লাস টেস্ট {পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং [] আরগস) {শিক্ষার্থী s = নতুন ছাত্র () s.setName ('হ্যারি পটার') System.out.println (s.getName ())}

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

এখন আসুন আরও একটি উদাহরণ দেখুন এবং গভীরতার সাথে এনক্যাপসুলেশনটি বুঝতে পারি। এই উদাহরণে, কার শ্রেণিতে দুটি ক্ষেত্র রয়েছে – নাম এবং টপস্পিড। এখানে, উভয়কেই ব্যক্তিগত হিসাবে ঘোষণা করা হয়েছে, যার অর্থ তারা সরাসরি শ্রেণীর বাইরে অ্যাক্সেস করতে পারবেন না। আমাদের কিছু getter এবং সেটার পদ্ধতি আছে যেমন getName, setName, setTopSpeed ​​ইত্যাদি, এবং সেগুলি সর্বজনীন হিসাবে ঘোষিত হয়। এই পদ্ধতিগুলি 'বহিরাগতদের' কাছে প্রকাশিত হয় এবং কার অবজেক্ট থেকে ডেটা পরিবর্তন এবং পুনরুদ্ধারে ব্যবহার করা যেতে পারে। আমাদের কাছে এমপিএইচ বা কেএমএইচটিতে সর্বোচ্চ গতির মান পুনরুদ্ধার করার জন্য গাড়ির শীর্ষ গতি এবং দুটি গেটর পদ্ধতি নির্ধারণ করার একটি পদ্ধতি রয়েছে। সুতরাং মূলত, এটিই এনক্যাপসুলেশন করে - এটি বাস্তবায়নটি আড়াল করে এবং আমাদের পছন্দসই মান দেয়। এখন, নীচের কোডটি দেখুন।

প্যাকেজ এডুরেকা পাবলিক ক্লাস কার {প্রাইভেট স্ট্রিং নাম প্রাইভেট ডাবল শীর্ষ স্পীড পাবলিক কার ()}} পাবলিক স্ট্রিং getName () {রিটার্ন নাম} পাবলিক শূন্য সেটনাম (স্ট্রিং নাম) {this.name = নাম} পাবলিক শূন্যতম সেটটপস্পিড (ডাবল স্পিড এমপিএইচ) {শীর্ষস্থানীয় = গতি এমপিএইচ} পাবলিক ডাবল গেটটপস্পিড এমএমএইচএইচ () {রিটার্ন টপস্পীড} পাবলিক ডাবল গেটপস্পিড কেএমএইচ () {রিটার্ন টপস্পিড * 1.609344} {

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

প্যাকেজ এডুরেকা পাবলিক ক্লাস উদাহরণ {পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং আরগস []) গাড়ী গাড়ি = নতুন গাড়ি () কার.সেটনাম ('মুস্তং জিটি 4.8-লিটার ভি 8') car.setTopSpeed ​​(201) System.out.println (গাড়ী)। getName () + 'MPH এর শীর্ষ গতি হ'ল' + car.getTopSpeedMPH ()) System.out.println (car.getName () + 'KMH এর শীর্ষ গতি' + car.getTopSpeedKMH ())

এসও, জাভাতে এভাবেই এনক্যাপসুলেশন অর্জন করা যায়। এখন, আসুন আরও সরানো যাক এবং কেন আমাদের এনক্যাপসুলেশন প্রয়োজন।

আমাদের জাভাতে এনক্যাপসুলেশন কেন দরকার?

জাভাতে এনক্যাপসুলেশন প্রয়োজনীয় কারণ:

  • এটি ডেটা অ্যাক্সেসযোগ্যতার উপায় নিয়ন্ত্রণ করে
  • প্রয়োজনীয়গুলির উপর ভিত্তি করে কোডটি সংশোধন করে
  • শিথিল দম্পতি অর্জনে আমাদের সহায়তা করে
  • আমাদের প্রয়োগের সরলতা অর্জন করে
  • এটি আপনাকে প্রোগ্রামে উপস্থিত অন্য কোনও ফাংশন বা কোড ব্যাহত না করে কোডের অংশটি পরিবর্তন করতে দেয় allows

এখন আসুন একটি ছোট্ট উদাহরণ বিবেচনা করি যা এনক্যাপসুলেশনের প্রয়োজনীয়তার চিত্র তুলে ধরে।

শ্রেণীর শিক্ষার্থী {আইটি স্ট্রিংয়ের নাম} পাবলিক ক্লাস ডেমো {পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং [] আরগস) {শিক্ষার্থী এস = নতুন শিক্ষার্থী () এস.আইডি = 0 এস.নাম = '' s.নেম = নাল}

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

সুতরাং, এগুলি হ'ল কয়েকটি পয়েন্টার যা এনক্যাপসুলেশনের প্রয়োজনীয়তা চিত্রিত করে। এখন আসুন, এনক্যাপসুলেশনের কিছু সুবিধা দেখি।

এনক্যাপসুলেশন এর সুবিধা

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

এখন যেহেতু আমরা এনক্যাপসুলেশনের মূলসূত্রগুলি বুঝতে পেরেছি, আসুন এই নিবন্ধের শেষ বিষয়টিতে ঝাঁপ দাও এবং একটি বাস্তব-সময়ের উদাহরণের সাহায্যে বিস্তারিতভাবে এনক্যাপসুলেশনটি বুঝতে পারি।

এনক্যাপসুলেশনের একটি রিয়েল-টাইম উদাহরণ

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

পাবলিক ক্লাস টেলিভিশন - প্রাইভেট ডাবল প্রস্থ বেসরকারী ডাবল উচ্চতা বেসরকারী ডাবল স্ক্রিনাইজ বেসরকারী ম্যাক্স ম্যাকভোলিউম প্রিন্ট ইন ভলিউম বেসরকারী বুলিয়ান পাওয়ার পাবলিক টেলিভিশন (ডাবল প্রস্থ, ডাবল উচ্চতা, ডাবল স্ক্রিনসাইজ)। this.width this.height this.screenSize = স্ক্রিনসাইজ} পাবলিক ডাবল চ্যানেলটিউন (int চ্যানেল) {স্যুইচ (চ্যানেল) {কেস 1: রিটার্ন 34.56 কেস 2: রিটার্ন 54.89 কেস 3: রিটার্ন 73.89 কেস 1: রিটার্ন 94.98} রিটার্ন 0} পাবলিক ইন্ট হ্রাস ভলিউম () {যদি (0 ভলিউম) ভলিউম ++ রিটার্ন ভলিউম}} শ্রেণি পরীক্ষা {পাবলিক স্ট্যাটিক অকার্যকর মূল (স্ট্রিং আরগস []) {টেলিভিশন টি = নতুন টেলিভিশন (11.5,7,9) টি.পাওয়ারসউইচ () t.channelTuning (2) t.decreaseVolume () t.increaseVolume () টেলিভিশন। // ভেরিয়েবলটি ব্যক্তিগত হিসাবে ত্রুটি নিক্ষেপ করে এবং ক্লাসের বাইরে প্রবেশ করা যায় না}}

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

কিভাবে লিনাক্সে ক্লাসপথ সেট করবেন

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

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

আমাদের জন্য একটি প্রশ্ন আছে? দয়া করে এটি 'জাভাতে এনক্যাপসুলেশন' ব্লগের মন্তব্য বিভাগে উল্লেখ করুন এবং আমরা যত তাড়াতাড়ি সম্ভব আপনার কাছে ফিরে আসব।