Java-র প্রধান অবজেক্ট-ওরিয়েন্টেড গঠন হলো ক্লাস, যা ডেটা (ফিল্ড) ও আচরণ (মেথড) নিয়ে গঠিত। একটি ক্লাসের ফিল্ড ও মেথডগুলোকে তার মেম্বার বলা হয়।
অ্যাক্সেস মডিফায়ারের মাধ্যমে মেম্বারদের অ্যাক্সেস নিয়ন্ত্রণ করা যায়, যার মধ্যে সবচেয়ে কমন দুটি হলো:
public: যেকোনো কোড থেকেই মেম্বারটি অ্যাক্সেস করা যায় (কোনো নিষেধাজ্ঞা নেই)।private: কেবল একই ক্লাসের কোড থেকেই মেম্বারটি অ্যাক্সেস করা যায়।ক্লাসটিকে ওই ক্লাসের ইনস্ট্যান্স তৈরির একটি টেমপ্লেট হিসেবে ভাবতে পারেন।
একটি ক্লাসের ইনস্ট্যান্স (যাকে _অবজেক্ট_ও বলা হয়) তৈরি করতে new কিওয়ার্ডটি ব্যবহার করা হয়:
class Car {
}
// Create two car instances
Car myCar = new Car();
Car yourCar = new Car();
ফিল্ডের একটি টাইপ ও একটি নাম থাকে (যা camelCase-এ লেখা হয়) এবং ক্লাসের যেকোনো জায়গায় ডিফাইন করা যায় (প্রথা অনুযায়ী PascalCase-এ লেখা হয়):
class Car {
// Accessible by anyone
public int weight;
// Only accessible by code in this class
private String color;
}
চাইলে একটি ফিল্ডে প্রাথমিক মান অ্যাসাইন করা যায়। কোনো ফিল্ডে যদি প্রাথমিক মান না নির্দিষ্ট করা হয়, তবে সেটি তার টাইপের ডিফল্ট মান হিসেবে সেট হয়ে যায়। ডট নোটেশন ব্যবহার করে একটি ইনস্ট্যান্সের ফিল্ডের মান অ্যাক্সেস ও আপডেট করা যায়।
class Car {
// Will be set to specified value
public int weight = 2500;
// Will be set to default value (0)
public int year;
}
Car newCar = new Car();
newCar.weight; // => 2500
newCar.year; // => 0
// Update value of the field
newCar.year = 2018;
সাধারণত একটি মেথড কল করার সাইড ইফেক্ট হিসেবে প্রাইভেট ফিল্ড আপডেট হয়।
এমন মেথড সাধারণত কোনো মান রিটার্ন করে না, সেক্ষেত্রে রিটার্ন টাইপ void হওয়া উচিত:
class CarImporter {
private int carsImported;
public void importCars(int numberOfCars)
{
// Update private field from public method
carsImported = carsImported + numberOfCars;
}
}
এই অনুশীলনীতে আপনি একটি রিমোট কন্ট্রোলড গাড়ি নিয়ে খেলবেন, যেটি কেনার জন্য অবশেষে যথেষ্ট টাকা জমিয়েছেন।
গাড়িগুলো সম্পূর্ণ (১০০%) চার্জযুক্ত ব্যাটারি নিয়ে শুরু করে। রিমোট কন্ট্রোল দিয়ে প্রতিবার গাড়ি চালালে এটি ২০ মিটার পথ চলে এবং ব্যাটারির এক শতাংশ কমিয়ে দেয়।
রিমোট কন্ট্রোলড গাড়িটিতে একটি দারুণ LED ডিসপ্লে আছে যেটি দুই টুকরো তথ্য দেখায়:
"Driven <METERS> meters"।"Battery at <PERCENTAGE>%"।যদি ব্যাটারি ০% থাকে, তাহলে আপনি আর গাড়ি চালাতে পারবেন না এবং ব্যাটারি ডিসপ্লেতে "Battery empty" দেখাবে।
আপনার ছয়টি টাস্ক আছে, যার প্রতিটি রিমোট কন্ট্রোলড গাড়ির ইনস্ট্যান্স নিয়ে কাজ করবে।
একটি একেবারে নতুন রিমোট কন্ট্রোলড গাড়ির ইনস্ট্যান্স রিটার্ন করার জন্য (static) JedliksToyCar.buy() মেথডটি ইমপ্লিমেন্ট করুন:
JedliksToyCar car = JedliksToyCar.buy();
LED ডিসপ্লেতে যেভাবে দেখানো হয় সেভাবে দূরত্ব রিটার্ন করার জন্য JedliksToyCar.distanceDisplay() মেথডটি ইমপ্লিমেন্ট করুন:
JedliksToyCar car = JedliksToyCar.buy();
car.distanceDisplay();
// => "Driven 0 meters"
LED ডিসপ্লেতে যেভাবে দেখানো হয় সেভাবে ব্যাটারির শতাংশ রিটার্ন করার জন্য JedliksToyCar.batteryDisplay() মেথডটি ইমপ্লিমেন্ট করুন:
JedliksToyCar car = JedliksToyCar.buy();
car.batteryDisplay();
// => "Battery at 100%"
JedliksToyCar.drive() মেথডটি ইমপ্লিমেন্ট করুন যা চালানো মিটারের সংখ্যা আপডেট করে:
JedliksToyCar car = JedliksToyCar.buy();
car.drive();
car.drive();
car.distanceDisplay();
// => "Driven 40 meters"
ব্যাটারির শতাংশ আপডেট করার জন্য JedliksToyCar.drive() মেথডটি আপডেট করুন:
JedliksToyCar car = JedliksToyCar.buy();
car.drive();
car.drive();
car.batteryDisplay();
// => "Battery at 98%"
ব্যাটারি শেষ হয়ে গেলে (০%-এ) চালানো দূরত্ব যাতে না বাড়ে এবং ব্যাটারির শতাংশ যাতে না কমে, সেভাবে JedliksToyCar.drive() মেথডটি আপডেট করুন:
JedliksToyCar car = JedliksToyCar.buy();
// Drain the battery
// ...
car.distanceDisplay();
// => "Driven 2000 meters"
car.batteryDisplay();
// => "Battery empty"
Exercism-এ সাইন আপ করুন, Java ট্র্যাকের 26টি কনসেপ্ট158টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।