Java

ক্লাস, ভেরিয়েবল ও কন্সট্রাক্টর

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

অন্যভাবে,

সবচেয়ে প্রয়োজনীয় জিনিস হচ্ছে ক্লাস একটি নতুন ধরণের ডাটা টাইপ প্রকাশ করে। এই নতুন ডাটা টাইপ সেই ডাটা টাইপের অবজেক্ট তৈরীতেই ব্যবহৃত হয়।

অবজেক্টঃ এর কিছু বৈশিষ্ট্য, আচরণ ও অবস্থা আছে। একটা ক্লাসের অবজেক্ট সেই ক্লাসের উল্লেখিত সকল কিছুর সমষ্টি।

লোকাল ভেরিয়েবলঃ যে ভেরিয়েবল গুলো কোন ব্লক, কোন্সট্রাক্টর, মেথোডের মাঝে ডিক্লেয়ার করা হয় তাদের লোকাল ভেরিয়েবল বলে। ব্লক, কোন্সট্রাক্টর, মেথোডের পরিসমাপ্তি ঘটলেই এই ভেরিয়েবলের ও পরিসমাপ্তি ঘটে। পুরো কোডের উপর তখন তাদের কোন প্রভাব থাকেনা।

ইন্সটেন্স ভেরিয়েবলঃ এই ভেরিয়েবল গুলো ক্লাসের মাঝে কিন্তু যে কোন মেথোডের বাহিরে ডিক্লেয়ার করা হয়। অবজেক্ট ক্রিয়েট করার সাথে সাথে যখন ক্লাসের কাজ শুরু হয় তখন এই ভেরিয়েবল গুলো পুরো ক্লাস জুড়ে প্রাধান্য বিস্তার করে থাকে।

একটি ক্লাসের ইন্সটেন্স ভেরিয়েবল গুলো সেই ক্লাসের ব্লক, কোন্সট্রাক্টর, মেথোডের মধ্যেও এক্সেস করা যায়।

ক্লাস ভেরিয়েবলঃ এই ভেরিয়েবল গুলো ক্লাসের মাঝে কিন্তু যে কোন মেথোডের বাহিরে ডিক্লেয়ার করা হয় static কিওয়ার্ড দিয়ে

কোন্সট্রাক্টরঃ কোন্সট্রাক্টর একটি ক্লাসের জন্যে সবচেয়ে গুরুত্বপূর্ণ বিষয়। একটি ক্লাসের জন্যে অবজেক্ট ক্রিয়েট করার সাথে সাথে কোন্সট্রাক্টর কল হয়ে থাকে। কোন কোনশট্রাক্টর লিখা না হলে জাভা কম্পাইলার বিল্ট ইন ডিফল্ট কোন্সট্রাক্টর (ভেলু জিরো) কল করে থাকে। একটি ক্লাসের একের অধিক কোন্সট্রাক্টর থাকতে পারে। একটি ক্লাসের কোন্সট্রাক্টর সেই ক্লাসের নামে হয়ে থাকে। এর কোন রিটার্ন টাইপ থাকেনা।

publicclassPuppy{

publicPuppy(){ /* পাপ্পি ক্লাস নেইম এবং কোন্সট্রাক্টর নেইম একই */

}

publicPuppy(String name){ /* ২য় কোন্সট্রাক্টর */

// This constructor has one parameter, name.

}

}

 

 

মাল্টিপল কন্সট্রাক্টরঃ

মেইন ক্লাসঃ

publicclass FirstCode {

publicstaticvoid main(String[] args) {

firstCodeClass ob = new firstCodeClass();

firstCodeClass ob1 = new firstCodeClass(2);

firstCodeClass ob2 = new firstCodeClass(4,5);

firstCodeClass ob3 = new firstCodeClass(3,45,60);

  1. out.println(ob.getTimes());
  2. out.println(ob1.getTimes());
  3. out.println(ob2.getTimes());
  4. out.println(ob3.getTimes());

}

}

 

সেকেন্ডারী ক্লাসঃ

publicclass firstCodeClass {

privateinthour,minute,second;

firstCodeClass() {

this(0,0,0);

}  /* এটা ডিফল্ট কন্সট্রাক্টর হিসেবে কাজ করে। যখন অবজেক্ট ক্রিয়েট করি তার সাথে যদি আমরা কোন প্যারামিটার পাস না করি তখনি একমাত্র এই কন্সট্রাক্টর কল হবেসবার সাথে ০ এসাইন হবে*/

firstCodeClass(inth) {

this(h,0,0);

} /* যখন অবজেক্ট ক্রিয়েট করার সময় একটি ভেলু পাস করি তখন এটি কল হবে এবং বাকি গুলো জিরো হিসেবে এসাইন হবে */

firstCodeClass(inth, intm) {

this(h,m,0);

}

/*  যখন অবজেক্ট ক্রিয়েট করার সময় দুইটি ভেলু পাস করি তখন এটি কল হবে */

firstCodeClass(inth, intm, ints) {

setTimes(h,m,s);

}

/* যখন অবজেক্ট ক্রিয়েট করার তিনটি ভেলু পাস করি তখন এটি কল হবে

উপরের কন্সট্রাক্টর গুলো কল হওয়ার পর এটি সবার শেষে কল হবে কেননা, প্রত্যেকটিতে ৩ টি করে ভেরিয়েবল দিয়েছি। আমরা যদি ২ টি ভেরিয়েবল ও পাস করি তখন ২ টি এসাইন হয়ে বাকি একটি ০ হয়ে এই কন্সট্রাক্টর এ পাস হবে এবং এটি setTimes(h,m,s); মেথোড কল করার মাধ্যমে তাদের ফাইনালি এসাইন করবে

*/

publicvoid setTimes(inth, intm, ints) {

setHour(h);

setMinute(m);

setSecond(s);

}

/* এটি মূলত hour , minute, second কে আলাদা ভাবে এসাইন করার জন্যেই তৈরি করা হয়েছে। কেননা অনেক সময় আমাদের অনেক ইনফোরমেশন দরকার নাও  হতে পারে। তাই আমরা মাল্টিপল কন্সট্রাক্টর ব্যাবহার করে থাকি। যেই ইনফো প্রভাইড করবো তাই এসাইন করে বাকি গুলো ডিফোল্ট হিসেবে থাকবে।

আমরা এই রকম নিজের প্রয়োজন মত কন্সট্রাক্টর মেইক করে কোড কে আরো কার্যকরী করতে পারি */

publicvoid setHour(inth) {

hour = h;

}

publicvoid setMinute(intm) {

minute = m;

}

publicvoid setSecond(ints) {

second = s;

}

public String getTimes() {

return String.format(“%02d:%02d:%02d”, hour, minute , second);

}

}

 

এখানে আছে ৪ টি কন্সট্রাক্টর, কিন্তু এর মাঝে প্রথম ৩ টিতেThis ব্যবহৃত হয়েছে। শেষের টিতে একটি মেথোড কল করা হয়েছে তাদের ভেলু ফাইনালি এসাইন করার জন্যে। প্রথমের ৩ টি কন্সট্রাক্টর প্রয়োজন মত ভেলু এসাইনের কাজের জন্যে ইউজ হয়। ফাইনালি ৪ নামবার কন্সট্রাক্টর this দ্বারা কল হয়ে থাকে।

যখন ২ টি ভেলু পাস করা হয় তখন ২ টি এসাইন হওয়ার পর this keyword মুলত আবার কন্সট্রাকটর কল করে শেষের সেকেন্ড ভেরিয়েবলের জন্যে ০ কে এসাইনের জন্যে। এই নিয়ম একটি ভেরিয়েবল পাসের ক্ষেত্রেও একই। তবে ৩ টির বেলায় এখানে ডাইরেক ৪ নম্বর কন্সট্রাক্টর ই কল হবে।

Leave a Reply

Your email address will not be published.

eleven + 6 =