একটি ক্লাস-এর ইনস্ট্যান্স তৈরি করা হয় new অপারেটরের মাধ্যমে তার কনস্ট্রাক্টর কল করে। কনস্ট্রাক্টর হলো এক বিশেষ ধরনের মেথড, যার উদ্দেশ্য হলো সদ্য তৈরি হওয়া একটি ইনস্ট্যান্স ইনিশিয়ালাইজ করা। কনস্ট্রাক্টর দেখতে সাধারণ মেথডের মতোই, তবে এতে কোনো রিটার্ন টাইপ থাকে না এবং এর নাম ক্লাসের নামের সাথে মিলে যায়।
class Library
{
private int books;
public Library()
{
// Initialize the books field
this.books = 10;
}
}
// This will call the constructor
var library = new Library();
সাধারণ মেথডের মতোই কনস্ট্রাক্টরেও প্যারামিটার থাকতে পারে। কনস্ট্রাক্টরের প্যারামিটার সাধারণত (প্রাইভেট) ফিল্ড হিসেবে সংরক্ষণ করা হয় পরে ব্যবহারের জন্য, নয়তো কোনো এককালীন হিসাব-নিকাশে ব্যবহার করা হয়। সাধারণ মেথডে আর্গুমেন্ট পাঠানোর মতোই কনস্ট্রাক্টরেও আর্গুমেন্ট পাঠানো যায়।
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)
এই অনুশীলনীতে আপনি বিভিন্ন ধরনের রিমোট কন্ট্রোল গাড়ির মধ্যে রেস আয়োজন করবেন। প্রতিটি গাড়ির নিজস্ব গতি ও ব্যাটারি ড্রেনের বৈশিষ্ট্য থাকে।
গাড়িগুলো পূর্ণ (১০০%) ব্যাটারি নিয়ে শুরু করে। রিমোট কন্ট্রোল দিয়ে গাড়িটি চালানোর প্রতিবার সেটি গাড়ির গতির সমান মিটার অতিক্রম করে, আর তার ব্যাটারি ড্রেন অবশিষ্ট ব্যাটারির শতাংশ কমিয়ে দেয়।
কোনো গাড়ির ব্যাটারি যদি তার ব্যাটারি ড্রেনের শতাংশের চেয়ে কম হয়ে যায়, তাহলে আপনি আর সেই গাড়ি চালাতে পারবেন না।
প্রতিটি রেস ট্র্যাকের নিজস্ব দূরত্ব থাকে। ব্যাটারি শেষ না হয়ে গাড়িটি ট্র্যাক শেষ করতে পারে কি না, তা যাচাই করে গাড়িগুলোর পরীক্ষা করা হয়।
আপনার সামনে ছয়টি কাজ আছে, যার প্রতিটিতে রিমোট কন্ট্রোল গাড়ির ইন্সট্যান্স নিয়ে কাজ করতে হবে।
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
সবচেয়ে বেশি বিক্রি হওয়া রিমোট কন্ট্রোল গাড়িটি হলো নাইট্রো, যার চমকপ্রদ সর্বোচ্চ গতি ৫০ মিটার এবং ব্যাটারি ড্রেন ৪%। এই ধরনের গাড়ি রিটার্ন করার জন্য (স্ট্যাটিক) 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টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।