C# में मुख्य ऑब्जेक्ट-ओरिएंटेड संरचना क्लास है, जो डेटा (फील्ड) और व्यवहार (मेथड) का मेल है। किसी क्लास के फील्ड और मेथड को उसके सदस्य कहा जाता है।
सदस्यों तक पहुँच को एक्सेस मॉडिफायर के ज़रिए सीमित किया जा सकता है। सबसे आम दो एक्सेस मॉडिफायर ये हैं:
public: इस सदस्य तक कोई भी कोड पहुँच सकता है (कोई रोक नहीं)।private: इस सदस्य तक सिर्फ उसी क्लास का कोड पहुँच सकता है।क्लास को उस क्लास के इंस्टेंस बनाने का एक टेम्पलेट मान सकते हैं। किसी क्लास का इंस्टेंस बनाने के लिए (जिसे ऑब्जेक्ट भी कहते हैं) new कीवर्ड इस्तेमाल किया जाता है:
class Car
{
}
// Create two car instances
var myCar = new Car();
var yourCar = new Car();
फील्ड का एक टाइप होता है और इन्हें क्लास में कहीं भी परिभाषित किया जा सकता है।
Public फील्ड PascalCase में और private फील्ड camelCase में लिखे जाते हैं, और private फील्ड से पहले अंडरस्कोर _ लगाया जाता है:
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;
}
var 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) RemoteControlCar.Buy() मेथड लागू कीजिए:
RemoteControlCar car = RemoteControlCar.Buy();
LED डिस्प्ले पर दिखाई जाने वाली दूरी लौटाने के लिए RemoteControlCar.DistanceDisplay() मेथड लागू कीजिए:
var car = RemoteControlCar.Buy();
car.DistanceDisplay();
// => "Driven 0 meters"
LED डिस्प्ले पर दिखाया जाने वाला बैटरी प्रतिशत लौटाने के लिए RemoteControlCar.BatteryDisplay() मेथड लागू कीजिए:
var car = RemoteControlCar.Buy();
car.BatteryDisplay();
// => "Battery at 100%"
तय किए गए मीटर बदलने वाला RemoteControlCar.Drive() मेथड लागू कीजिए:
var car = RemoteControlCar.Buy();
car.Drive();
car.Drive();
car.DistanceDisplay();
// => "Driven 40 meters"
बैटरी का प्रतिशत बदलने के लिए RemoteControlCar.Drive() मेथड को बदलिए:
var car = RemoteControlCar.Buy();
car.Drive();
car.Drive();
car.BatteryDisplay();
// => "Battery at 98%"
जब बैटरी खत्म (0% पर) हो जाए, तब न तय की गई दूरी बढ़े और न बैटरी का प्रतिशत घटे, इसके लिए RemoteControlCar.Drive() मेथड को बदलिए:
var car = RemoteControlCar.Buy();
// Drain the battery
// ...
car.DistanceDisplay();
// => "Driven 2000 meters"
car.BatteryDisplay();
// => "Battery empty"
Exercism पर साइन अप कीजिए और C# को 62 कॉन्सेप्ट178 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।