কম্পিউটার

জাভাতে ডিপ কপি এবং শ্যালো কপি


গভীর অনুলিপি এবং অগভীর অনুলিপি উভয়ই বিভিন্ন উপায়ে প্রদত্ত বস্তুর একটি অনুলিপি তৈরিকে বোঝায় −

অগভীর অনুলিপি

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

উদাহরণ

import java.util.* ;
class Demo{
   private int[] my_data;
   public Demo(int[] my_vals){
      my_data = my_vals;
   }
   public void display_data(){
      System.out.println(Arrays.toString(my_data) );
   }
}
public class Use_Demo{
   public static void main(String[] args){
      int[] my_vals = {56, 89, 91};
      Demo my_inst = new Demo(my_vals);
      my_inst.display_data();
      my_vals[0] = 65;
      my_inst.display_data();
   }
}

আউটপুট

[56, 89, 91]
[65, 89, 91]

ডেমো নামের একটি ক্লাসে একটি পরিবর্তনশীল এবং একটি কনস্ট্রাক্টর রয়েছে যা অ্যারের উপাদানগুলিকে নতুন অ্যারেতে কপি করে। 'display_data' নামের আরেকটি ফাংশন এই ডেটার অ্যারে প্রদর্শন করে। প্রধান ফাংশনে, একটি উদাহরণ তৈরি করা হয়, অ্যারেটি সংজ্ঞায়িত করা হয় এবং ফাংশনটিকে বলা হয়। প্রাসঙ্গিক আউটপুট কনসোলে প্রদর্শিত হয় এবং এতে সমস্ত পরিবর্তন প্রতিফলিত হয়।

গভীর অনুলিপি

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

উদাহরণ

import java.util.*;
class Demo{
   private int[] my_data;
   public Demo(int[] my_vals){
      my_data = new int[my_vals.length];
      for (int i = 0; i < my_data.length; i++){
         my_data[i] = my_vals[i];
      }
   }
   public void display_data(){
      System.out.println(Arrays.toString(my_data));
   }
}
public class Use_Demo{
   public static void main(String[] args){
      int[] my_vals = {56, 89, 91};
      Demo my_inst = new Demo(my_vals);
      my_inst.display_data();
      my_vals[0] = 65;
      my_inst.display_data();
   }
}

আউটপুট

[56, 89, 91]
[56, 89, 91]

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


  1. ভাগফল এবং অবশিষ্টাংশ গণনা করার জন্য জাভা প্রোগ্রাম

  2. মেমোরাইজেশন (1D, 2D এবং 3D) জাভাতে ডায়নামিক প্রোগ্রামিং

  3. কিভাবে আমরা জাভাতে একটি JTextArea-এর কাট, কপি এবং পেস্ট কার্যকারিতা অক্ষম করতে পারি?

  4. কিভাবে আমরা জাভাতে JTextField-এর কাট, কপি এবং পেস্ট কার্যকারিতা বাস্তবায়ন করতে পারি?