किसी क्लास का इंस्टेंस बनाने के लिए उसके कंस्ट्रक्टर को new ऑपरेटर के ज़रिए कॉल किया जाता है। कंस्ट्रक्टर एक खास तरह का मेथड होता है, जिसका उद्देश्य नए बनाए गए इंस्टेंस को शुरुआती वैल्यू देना होता है। कंस्ट्रक्टर दिखते तो आम मेथड जैसे ही हैं। फर्क बस इतना है कि इनका कोई रिटर्न टाइप नहीं होता और इनका नाम क्लास के नाम से मिलता है।
class Library
{
private int books;
public Library()
{
// Initialize the books field
this.books = 10;
}
}
// This will call the constructor
var library = new Library();
आम मेथड की तरह कंस्ट्रक्टर में भी पैरामीटर हो सकते हैं। कंस्ट्रक्टर के पैरामीटर आम तौर पर (private) फील्ड में संग्रहीत कर लिए जाते हैं, ताकि बाद में उन्हें इस्तेमाल किया जा सके, या फिर किसी एक बार के हिसाब में काम आते हैं। कंस्ट्रक्टर को आर्गुमेंट भी उसी तरह भेजे जा सकते हैं जैसे आम मेथड को भेजे जाते हैं।
class Building
{
private int numberOfStories;
private int totalHeight;
public Building(int numberOfStories, double storyHeight)
{
this.numberOfStories = numberOfStories;
this.totalHeight = numberOfStories * storyHeight;
}
}
// Call a constructor with two arguments
var largeBuilding = new Building(55, 6.2)
इस अभ्यास में आप अलग-अलग तरह की रिमोट कंट्रोल कारों के बीच रेस का आयोजन करेंगे। हर कार की अपनी गति होती है और अपना बैटरी ड्रेन होता है।
कारें पूरी (100%) बैटरी के साथ शुरू होती हैं। जब भी आप रिमोट कंट्रोल से कार चलाते हैं, वह कार की गति के बराबर मीटर तय करती है और बची हुई बैटरी का प्रतिशत उसके बैटरी ड्रेन के बराबर घटा देती है।
अगर किसी कार की बैटरी उसके बैटरी ड्रेन प्रतिशत से कम रह गई हो, तो आप उस कार को और नहीं चला सकते।
हर रेस ट्रैक की अपनी दूरी होती है। कारों की जाँच यह देखकर की जाती है कि वे बैटरी खत्म हुए बिना ट्रैक पूरा कर पाती हैं या नहीं।
आपके पास छह कार्य हैं। हर कार्य में रिमोट कंट्रोल कार के इंस्टेंस के साथ काम करना है।
RemoteControlCar क्लास के लिए ऐसा कंस्ट्रक्टर बनाइए जो कार की गति (मीटर में) और बैटरी ड्रेन प्रतिशत को अपने दो पैरामीटर के रूप में लेता है (दोनों का टाइप int है)। इस तरह आप रिमोट कंट्रोल कार बना सकेंगे:
int speed = 5;
int batteryDrain = 2;
var car = new RemoteControlCar(speed, batteryDrain);
RaceTrack क्लास के लिए ऐसा कंस्ट्रक्टर बनाइए जो ट्रैक की दूरी (मीटर में) को अपना एकमात्र पैरामीटर लेता है (जिसका टाइप int है)। इस तरह आप रेस ट्रैक बना सकेंगे:
int distance = 800;
var raceTrack = new RaceTrack(distance);
RemoteControlCar.Drive() मेथड लागू कीजिए, जो कार की गति के आधार पर तय किए गए मीटरों की संख्या अपडेट करता है। साथ ही RemoteControlCar.DistanceDriven() मेथड लागू कीजिए, जो कार द्वारा तय किए गए मीटरों की संख्या लौटाता है:
int speed = 5;
int batteryDrain = 2;
var car = new RemoteControlCar(speed, batteryDrain);
car.Drive();
car.DistanceDriven();
// => 5
RemoteControlCar.Drive() मेथड को ऐसे अपडेट कीजिए कि वह कार के बैटरी ड्रेन के अनुसार बैटरी भी घटा दे। साथ ही RemoteControlCar.BatteryDrained() मेथड लागू कीजिए, जो बताता है कि बैटरी खत्म हो चुकी है या नहीं:
int speed = 5;
int batteryDrain = 2;
var car = new RemoteControlCar(speed, batteryDrain);
car.Drive();
car.BatteryDrained();
// => false
सबसे ज़्यादा बिकने वाली रिमोट कंट्रोल कार Nitro है, जिसकी शानदार अधिकतम गति 50 मीटर है और बैटरी ड्रेन 4% है। इस तरह की कार लौटाने के लिए (static) RemoteControlCar.Nitro() मेथड लागू कीजिए:
var car = RemoteControlCar.Nitro();
car.Drive();
car.DistanceDriven();
// => 50
रेस ट्रैक पूरा करने के लिए कार को ट्रैक की दूरी तय कर पाना ज़रूरी है। इसका मतलब है कि फिनिश लाइन पार करने से पहले उसकी बैटरी खत्म नहीं होनी चाहिए। RaceTrack.TryFinishTrack() मेथड लागू कीजिए, जो अपने पैरामीटर के रूप में एक RemoteControlCar इंस्टेंस लेता है और अगर कार यह रेस ट्रैक पूरा कर सकती है तो true लौटाता है, वरना false लौटाता है:
int speed = 5;
int batteryDrain = 2;
var car = new RemoteControlCar(speed, batteryDrain);
int distance = 100;
var raceTrack = new RaceTrack(distance);
raceTrack.TryFinishTrack(car);
// => true
Exercism पर साइन अप कीजिए और C# को 62 कॉन्सेप्ट178 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।