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;
}
}
इस अभ्यास में आप एक रिमोट कंट्रोल कार से खेलेंगे। इसे खरीदने के लिए आपने अब तक पर्याप्त पैसा बचा लिया है।
कार की बैटरी शुरू में पूरी (100%) रहती है। जब भी आप रिमोट कंट्रोल से कार चलाते हैं, वह 20 मीटर चलती है और बैटरी का एक प्रतिशत खत्म हो जाता है।
रिमोट कंट्रोल कार में एक शानदार LED डिस्प्ले है, जो दो जानकारियाँ दिखाता है:
"Driven <METERS> meters"."Battery at <PERCENTAGE>%".अगर बैटरी 0% पर हो, तो आप कार को और नहीं चला सकते, और बैटरी डिस्प्ले "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%"
जब बैटरी खत्म हो जाए (0% पर), तो तय की गई दूरी न बढ़े और बैटरी का प्रतिशत न घटे, इसके लिए JedliksToyCar.drive() मेथड को अपडेट कीजिए:
JedliksToyCar car = JedliksToyCar.buy();
// Drain the battery
// ...
car.distanceDisplay();
// => "Driven 2000 meters"
car.batteryDisplay();
// => "Battery empty"
Exercism पर साइन अप कीजिए और Java को 26 कॉन्सेप्ट158 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।