CodeGym /Java Blog /এলোমেলো /অপারেটরের জাভা উদাহরণ
John Squirrels
লেভেল 41
San Francisco

অপারেটরের জাভা উদাহরণ

এলোমেলো দলে প্রকাশিত
ওহে! আজ আমরা অপারেটরের উদাহরণ সম্পর্কে কথা বলব, এটি কীভাবে ব্যবহার করা হয় তার উদাহরণ বিবেচনা করব এবং এটি কীভাবে কাজ করে তার কিছু দিক স্পর্শ করব :) আপনি ইতিমধ্যেই CodeGym-এর প্রাথমিক স্তরে এই অপারেটরের মুখোমুখি হয়েছেন৷ আমাদের এটা প্রয়োজন কেন আপনি মনে রাখবেন? যদি না হয়, কোন চিন্তা নেই. আসুন একসাথে মনে রাখা যাক। একটি X ভেরিয়েবল দ্বারা উল্লেখ করা একটি বস্তু কিছু Y শ্রেণীর উপর ভিত্তি করে তৈরি করা হয়েছে কিনা তা পরীক্ষা করার জন্য instanceof অপারেটরের প্রয়োজন । যে সহজ শোনাচ্ছে. কেন আমরা এই বিষয়ে ফিরে এসেছি? প্রথমত, কারণ এখন আপনি জাভা এর উত্তরাধিকার প্রক্রিয়া এবং OOP-এর অন্যান্য নীতিগুলির সাথে ভালভাবে পরিচিত। অপারেটরের ইন্সট্যান্স এখন আরও পরিষ্কার হবে এবং আমরা এটি কীভাবে ব্যবহার করা হয় তার আরও উন্নত উদাহরণ দেখব। চলো যাই!অপারেটরের উদাহরণ কীভাবে কাজ করে - 1আপনি সম্ভবত মনে রাখবেন যে চেকটি সত্যে মূল্যায়ন করলে অপারেটরের উদাহরণটি সত্য হয়, বা অভিব্যক্তিটি মিথ্যা হলে মিথ্যা হয়। তদনুসারে, এটি সাধারণত সব ধরণের শর্তসাপেক্ষ অভিব্যক্তিতে ঘটে ( if…else )। কিছু সহজ উদাহরণ দিয়ে শুরু করা যাক:

public class Main {

   public static void main(String[] args) {

       Integer x = new Integer(22);

       System.out.println(x instanceof Integer);
   }
}
আপনি কি মনে করেন কনসোলে প্রদর্শিত হবে? ওয়েল, এটা এখানে সুস্পষ্ট। :) x বস্তুটি একটি পূর্ণসংখ্যা, তাই ফলাফল সত্য হবে । কনসোল আউটপুট: True এটি একটি স্ট্রিং কিনা তা পরীক্ষা করার চেষ্টা করুন :

public class Main {

   public static void main(String[] args) {

       Integer x = new Integer(22);

       System.out.println(x instanceof String); // Error!
   }
}
আমরা একটি ত্রুটি পেয়েছি. এবং মনোযোগ দিন: কম্পাইলার কোড চালানোর আগে ত্রুটি তৈরি করেছে! এটি অবিলম্বে দেখেছে যে পূর্ণসংখ্যা এবং স্ট্রিং স্বয়ংক্রিয়ভাবে একে অপরের সাথে রূপান্তরিত হতে পারে না এবং উত্তরাধিকারের মাধ্যমে সম্পর্কিত নয়। ফলস্বরূপ, স্ট্রিং এর উপর ভিত্তি করে একটি পূর্ণসংখ্যা বস্তু তৈরি করা হয় না । এটি সুবিধাজনক এবং অদ্ভুত রানটাইম ত্রুটিগুলি এড়াতে সাহায্য করে, তাই কম্পাইলার আমাদের এখানে সাহায্য করেছে :) এখন আসুন আরও কঠিন উদাহরণ বিবেচনা করার চেষ্টা করি। যেহেতু আমরা উত্তরাধিকার উল্লেখ করেছি, আসুন নিম্নলিখিত ক্লাসগুলির ছোট সিস্টেমের সাথে কাজ করি:

public class Animal {

}

public class Cat extends Animal {

}

public class MaineCoon extends Cat {

}
আমরা ইতিমধ্যেই জানি যখন আমরা একটি বস্তু একটি ক্লাসের একটি উদাহরণ কিনা তা পরীক্ষা করার সময় কিভাবে instanceof আচরণ করে, কিন্তু আমরা যদি পিতামাতা-সন্তানের সম্পর্ক বিবেচনা করি তাহলে কি হবে? উদাহরণস্বরূপ, আপনি কি মনে করেন এই অভিব্যক্তিগুলি ফল দেবে:

public class Main {

   public static void main(String[] args) {

       Cat cat = new Cat();

       System.out.println(cat instanceof Animal);

       System.out.println(cat instanceof MaineCoon);

   }
}
আউটপুট: True False মূল প্রশ্নটির উত্তর দিতে হবে তা হল কিভাবে instanceof 'একটি শ্রেণীর উপর ভিত্তি করে তৈরি বস্তু' ব্যাখ্যা করে? ' প্রাণীর বিড়াল উদাহরণ ' সত্য বলে মূল্যায়ন করে , তবে অবশ্যই আমরা সেই শব্দের সাথে দোষ খুঁজে পেতে পারি। কেন একটি বিড়াল বস্তু পশু শ্রেণীর উপর ভিত্তি করে তৈরি করা হয়? এটি কি একা নিজস্ব শ্রেণীর উপর ভিত্তি করে তৈরি নয়? উত্তরটি যথেষ্ট সহজ, এবং আপনি ইতিমধ্যে এটি ভেবে থাকতে পারেন। একটি অবজেক্ট তৈরি করার সময় কনস্ট্রাক্টরকে যে ক্রমে কল করা হয় এবং ভেরিয়েবল শুরু করা হয় তা মনে রাখবেন। আমরা ইতিমধ্যে ক্লাস কনস্ট্রাক্টর সম্পর্কে নিবন্ধে এই বিষয়টি কভার করেছি । এখানে সেই পাঠ থেকে একটি উদাহরণ:

public class Animal {

   String brain = "Initial value of brain in the Animal class";
   String heart = "Initial value of heart in the Animal class";

   public static int animalCount = 7700000;

   public Animal(String brain, String heart) {
       System.out.println("Animal base class constructor is running");
       System.out.println("Have the variables of the Animal class already been initialized?");
       System.out.println("Current value of static variable animalCount = " + animalCount);
       System.out.println("Current value of brain in the Animal class = " + this.brain);
       System.out.println("Current value of heart in the Animal class = " + this.heart);
       System.out.println("Have the variables of the Cat class already been initialized?");
       System.out.println("Current value of static variable catCount = " + Cat.catCount);

       this.brain = brain;
       this.heart = heart;
       System.out.println("Animal base class constructor is done!");
       System.out.println("Current value of brain = " + this.brain);
       System.out.println("Current value of heart = " + this.heart);
   }
}

public class Cat extends Animal {

   String tail = "Initial value of tail in the Cat class";

   static int catCount = 37;

   public Cat(String brain, String heart, String tail) {
       super(brain, heart);
       System.out.println("The Cat class constructor has started (The Animal constructor already finished)");
       System.out.println("Current value of static variable catCount = " + catCount);
       System.out.println("Current value of tail = " + this.tail);
       this.tail = tail;
       System.out.println("Current value of tail = " + this.tail);
   }

   public static void main(String[] args) {
       Cat cat = new Cat("Brain", "Heart", "Tail");
   }
}
এবং যদি আপনি এটি IDE তে চালান, কনসোল আউটপুটটি এইরকম দেখাবে: অ্যানিম্যাল বেস ক্লাস কনস্ট্রাক্টর চলছে স্থির পরিবর্তনশীল পশুর বর্তমান মান = 7700000 প্রাণী শ্রেণিতে মস্তিষ্কের বর্তমান মান = পশু শ্রেণিতে মস্তিষ্কের প্রাথমিক মান পশু শ্রেণিতে হৃদয়ের বর্তমান মান = পশু শ্রেণিতে হৃদয়ের প্রাথমিক মান ইতিমধ্যেই বিড়াল শ্রেণির চলক রয়েছে আরম্ভ করা হয়েছে? স্ট্যাটিক ভেরিয়েবলের বর্তমান মান catCount = 37 Animal base class constructor হয়ে গেছে! মস্তিষ্কের বর্তমান মান = মস্তিষ্কের বর্তমান মান হৃদয় = হৃদয় বিড়াল শ্রেণী নির্মাণকারী শুরু হয়েছে (প্রাণী নির্মাণকারী ইতিমধ্যেই শেষ হয়েছে) স্ট্যাটিক ভেরিয়েবলের বর্তমান মান catCount = 37 টেলের বর্তমান মান = ক্যাট ক্লাসে লেজের প্রাথমিক মান = লেজের বর্তমান মান লেজ এখন কি মনে আছে? :) বেস ক্লাসের কনস্ট্রাক্টর, যদি বেস ক্লাস থাকে তবে অবজেক্ট তৈরি করার সময় সর্বদা প্রথমে ডাকা হয়। একটি B শ্রেণীর উপর ভিত্তি করে একটি A অবজেক্ট তৈরি করা হয়েছে কিনা তা নির্ধারণ করার চেষ্টা করার সময় instanceof অপারেটর এই নীতি দ্বারা পরিচালিত হয় । যদি বেস ক্লাস কনস্ট্রাক্টর বলা হয়, তাহলে কোন সন্দেহ থাকতে পারে না। দ্বিতীয় চেকের সাথে, সবকিছু সহজ:

System.out.println(cat instanceof MaineCoon);
যখন ক্যাট অবজেক্ট তৈরি করা হয়েছিল তখন মেইনকুন কনস্ট্রাক্টরকে ডাকা হয়নি , যা বোঝায়। সর্বোপরি, মেইনকুন বিড়ালের বংশধর , পূর্বপুরুষ নয়। এবং এটি বিড়ালের জন্য একটি টেমপ্লেট নয় । ঠিক আছে, আমি মনে করি আমরা যে পরিষ্কার. কিন্তু আমরা যদি এটা করি তাহলে কি হবে?:

public class Main {

   public static void main(String[] args) {

       Cat cat = new MaineCoon();

       System.out.println(cat instanceof Cat);
       System.out.println(cat instanceof MaineCoon);


   }
}
হুম... এখন এটা কঠিন. এর উপর কথা বলা যাক. আমাদের কাছে একটি ক্যাট ভেরিয়েবল রয়েছে যাকে আমরা একটি মেইনকুন অবজেক্ট বরাদ্দ করেছি। উপায় দ্বারা, কেন যে এমনকি কাজ করে? আমরা এটা করতে পারি, তাই না? হ্যাঁ আমরা পারি. সব পরে, প্রতিটি MaineCoon একটি বিড়াল. যদি এটি সম্পূর্ণরূপে পরিষ্কার না হয় তবে আদিম প্রকারগুলিকে প্রসারিত করার উদাহরণটি মনে রাখবেন:

public class Main {

   public static void main(String[] args) {

       long x = 1024;

   }
}
1024 সংখ্যাটি একটি সংক্ষিপ্ত : এটি সহজেই একটি দীর্ঘ পরিবর্তনশীলের সাথে ফিট করে, যেহেতু এটিকে মিটমাট করার জন্য যথেষ্ট বাইট রয়েছে (পুতুলের উদাহরণটি মনে রাখবেন?)। একটি বংশধর বস্তু সর্বদা একটি পূর্বপুরুষ পরিবর্তনশীলকে বরাদ্দ করা যেতে পারে। আপাতত, শুধু এটি মনে রাখবেন, এবং পরবর্তী পাঠে আমরা বিশ্লেষণ করব কিভাবে এটি কাজ করে। তাই আমাদের উদাহরণ আউটপুট কি?

Cat cat = new MaineCoon();
System.out.println(cat instanceof Cat);
System.out.println(cat instanceof MaineCoon);
কি উদাহরণ চেক হবে? আমাদের ক্যাট ভেরিয়েবল বা আমাদের মেইনকুন অবজেক্ট? উত্তর এই প্রশ্ন আসলে সহজ. আপনাকে কেবল অপারেটরের সংজ্ঞাটি আবার পড়তে হবে: X ভেরিয়েবল দ্বারা উল্লেখ করা বস্তুটি কিছু Y শ্রেণীর উপর ভিত্তি করে তৈরি হয়েছে কিনা তা পরীক্ষা করার জন্য অপারেটরের উদাহরণটি প্রয়োজন। অপারেটরের উদাহরণ একটি বস্তুর উৎপত্তি পরীক্ষা করে, পরিবর্তনশীল প্রকার নয়। সুতরাং, এই উদাহরণে, আমাদের প্রোগ্রাম উভয় ক্ষেত্রেই সত্য প্রদর্শন করবে: আমাদের কাছে একটি MaineCoon অবজেক্ট আছে। স্পষ্টতই, এটি MaineCoon ক্লাসের উপর ভিত্তি করে তৈরি করা হয়েছিল , তবে এটি বিড়ালের উপর ভিত্তি করে তৈরি করা হয়েছিলঅভিভাবক শ্রেণীর পাশাপাশি!
মন্তব্য
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION