জাভাতে শ্যালো কপি এবং ডিপ কপি কীভাবে প্রয়োগ করবেন

এই নিবন্ধটি আপনাকে উদাহরণ সহ জাভায় শ্যালো কপি এবং ডিপ কপির একটি বিশদ এবং ব্যাপক জ্ঞান সরবরাহ করবে।

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



জাভা অবজেক্টের অনুলিপি তৈরি করা হচ্ছে

আমরা এর দ্বারা জাভা অবজেক্টের একটি রেপ্লিকা বা অনুলিপি তৈরি করতে পারি



1. ভিন্ন মেমরির স্থানে অবজেক্টের অনুলিপি তৈরি করা। একে ডিপ কপি বলা হয়।

২. একটি নতুন রেফারেন্স তৈরি করা যা একই স্মৃতি অবস্থানের দিকে নির্দেশ করে। এটিকে শ্যালো কপিও বলা হয়।



অগভীর কপি

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

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

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



অগভীর অনুলিপি জন্য কোড

প্যাকেজ com.test শ্রেণি বিভাগ {স্ট্রিং এমপিআইড স্ট্রিং গ্রেড স্ট্রিং ডিজাইনিং পাবলিক ডিপার্টমেন্ট (স্ট্রিং এম্পআইড, স্ট্রিং গ্রেড, স্ট্রিং ডিজাইনিং) {this.empId = এম্প্রেড = গ্রেড this.designation = ডিজাইনিশন} ক্লাস কর্মী প্রয়োগ ক্লোনযোগ্য able আইটি আইডি স্ট্রিংয়ের নাম বিভাগ জনসাধারণের কর্মচারী (ইনড আইডি, স্ট্রিং নাম, বিভাগ অধিদপ্তর) {this.id = id this.name = নাম this.dept = ডিপ্ট} // ক্লোন () পদ্ধতির ডিফল্ট সংস্করণ। এটি কোনও বস্তুর অগভীর অনুলিপি তৈরি করে। সুরক্ষিত অবজেক্ট ক্লোনটি () ক্লোননটসপোর্টড এক্সপশন {রিটার্ন সুপারক্লোন ()}} পাবলিক ক্লাস শ্যালোকপিআইএনজভা {পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং [] আরগস) {ডিপার্টমেন্ট ডিপ্ট 1 = নতুন বিভাগ ('1', 'এ', 'এভিপি') কর্মচারী emp1 = নতুন কর্মচারী (111, 'জন', ডিপ্ট 1) কর্মচারী এমপ 2 = নালার চেষ্টা করুন {// এমপ 1 এর একটি ক্লোন তৈরি করে এম্প222 (কর্মচারী) এমপ 1 ক্লোন ()} ক্যাচ (ক্লোননটসপোর্টড এক্সেক্সশন ই) এ নিয়োগ করুন assign ই { মুদ্রণ স্ট্যাকট্রেস ()} // 'এমপ 1' সিস্টেম.আউট.প্রিন্টলন (এম 1.ডেপট.ডিজাইনেশন) এর পদবি মুদ্রণ // আউটপুট: এভিপি // 'এমপ 2' এর পদবি পরিবর্তন করা হয়েছে এমপ 2.ডেপটি.ডিজাইনেশন = 'পরিচালক' // এই পরিবর্তনটি মূল কর্মচারী 'emp1' System.out.println (emp1.dept.designation) এ প্রতিফলিত হবে // আউটপুট: পরিচালক}}

আউটপুট:

অ্যারে জাভা মধ্যে বৃহত্তম উপাদান সন্ধান করুন

Output-Shallow-Copy

উপরের উদাহরণে আমাদের একটি কর্মচারী শ্রেণি এম 1 রয়েছে যার তিনটি শ্রেণীর ভেরিয়েবল আইডি (ইন্ট), নাম (স্ট্রিং) এবং বিভাগ (বিভাগ) রয়েছে।

অগভীর অনুলিপি তৈরি করার জন্য আমরা এখন এম 1 এম্পো 2 তে ক্লোন করেছি, তারপরে আমরা এমপ 2 অবজেক্ট ব্যবহার করে পদবি পরিবর্তন করেছি এবং যাচাই করেছিলাম যে একই পরিবর্তনগুলি এমপি 1 এও প্রতিফলিত হয়েছে।


গভীর কপি

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

ডিপ কপির জন্য কোড

ইনফরমেশনটিতে সক্রিয় এবং প্যাসিভ রূপান্তর
প্যাকেজ com.test শ্রেণি বিভাগ ক্লোনেবেল {স্ট্রিং এমপিআইড স্ট্রিং গ্রেডের স্ট্রিং ডিজাইনিং পাবলিক বিভাগ (স্ট্রিং এম্পআইডি, স্ট্রিং গ্রেড, স্ট্রিং ডিজাইনিশন) {this.empId = এম্পিড = গ্রেড this.designation = উপাধি} // ক্লোনটির ডিফল্ট সংস্করণ () পদ্ধতি। সুরক্ষিত অবজেক্ট ক্লোন () ক্লোননটসপোর্টড এক্সপশন {রিটার্ন সুপারক্লোন ()}} বর্গ কর্মচারী ক্লোনযোগ্য {আইটি স্ট্রিং নাম বিভাগের জনসাধারণের কর্মচারী (ইন্ট আইডি, স্ট্রিং নাম, বিভাগ অধিদপ্তর) {this.id = আইডি this.name = নাম this.dept = ডিপ্ট} // কোনও বস্তুর গভীর অনুলিপি তৈরি করতে ওভাররাইডিং ক্লোন () পদ্ধতি। সুরক্ষিত অবজেক্ট ক্লোন () ক্লোননটসপোর্টড এক্সপশন rows কর্মচারী এমপ = (কর্মচারী) সুপারক্লোন () emp.dept = (বিভাগ) ডিপ্টক্লোন () রিটার্ন এমপ}} পাবলিক ক্লাস ডিপকপিআইএনজভা {পাবলিক স্ট্যাটিক অকার্যকর প্রধান (স্ট্রিং [] আরগস) { বিভাগ ডিপ্ট 1 = নতুন বিভাগ ('1', 'এ', 'এভিপি') কর্মচারী এম 1 = নতুন কর্মচারী (111, 'জন', ডিপ্ট 1) কর্মচারী এমপ 2 = নালার চেষ্টা করুন {// এমপ 1 এর ক্লোন তৈরি করে এমপ 2 এ নিয়োগ করুন এমপ 2 = (কর্মচারী) এম 1 কোলোন ()} ক্যাচ (ক্লোননটসপোর্টড এক্সেক্সেশন ই) {ই.প্রিন্টস্ট্যাকট্রেস ()} // 'এমপি 1' সিস্টেম.আউট.প্রিন্টলন (এমপ 1.ডেপ.ডিজাইনেশন) এর পদবি মুদ্রণ // আউটপুট: এভিপি / / 'এমপ 2' এমপ 2.dept.designation = 'পরিচালক' এর পদবি পরিবর্তন করা // এই পরিবর্তনটি মূল কর্মচারী 'এমপ 1' System.out.println (emp1.dept.designation) // আউটপুট: এভিপি} in এ প্রতিফলিত হবে

আউটপুট:

অগভীর অনুলিপিটির বিপরীতে ডিপ কপির উপরের উদাহরণে উত্স এবং গন্তব্য উভয়ই একে অপরের থেকে পৃথক। এমপ 2-এ করা কোনও পরিবর্তন এমপ 1 এ প্রভাব ফেলবে না।

অগভীর অনুলিপি এবং ডিপ কপির মধ্যে পার্থক্য

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

এটির সাথে আমরা শ্যালো কপি এবং ডিপ কপি নিবন্ধের শেষে এসেছি। আমি আশা করি আপনি উভয়ের মধ্যে বিভিন্ন পার্থক্য বুঝতে পেরেছি।

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

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