مسیرها
/
C#
C#
/
تمرین‌ها
/
نیاز به سرعت
نیاز به سرعت

نیاز به سرعت

تمرین یادگیری

مقدمه

سازنده‌ها

ساختن یک نمونه از یک کلاس با فراخوانی _سازنده_ی آن از طریق عملگر 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)

دستورالعمل‌ها

در این تمرین، مسابقه‌هایی بین انواع مختلف خودروهای کنترل از راه دور ترتیب می‌دهید. هر خودرو سرعت و مصرف باتری مخصوص به خود را دارد.

خودروها با باتری کاملاً پر (۱۰۰٪) شروع می‌کنند. هر بار که خودرو را با کنترل از راه دور می‌رانید، به اندازه‌ی سرعت خودرو متر طی می‌کند و درصد باتری باقی‌مانده را به اندازه‌ی مصرف باتری‌اش کاهش می‌دهد.

اگر باتری خودرو کمتر از درصد مصرف باتری‌اش باشد، دیگر نمی‌توانید خودرو را برانید.

هر پیست مسابقه مسافت مخصوص به خود را دارد. خودروها با بررسی این موضوع آزمایش می‌شوند که آیا می‌توانند بدون تمام شدن باتری، پیست را به پایان برسانند.

شش وظیفه دارید که هر کدام با نمونه‌هایی از خودروی کنترل از راه دور سر و کار دارند.

1. ساخت خودروی کنترل از راه دور

با تعریف یک سازنده برای کلاس RemoteControlCar امکان ساخت خودروی کنترل از راه دور را فراهم کنید؛ این سازنده سرعت خودرو بر حسب متر و درصد مصرف باتری را به عنوان دو پارامتر خود می‌گیرد (هر دو از نوع int):

int speed = 5;
int batteryDrain = 2;
var car = new RemoteControlCar(speed, batteryDrain);

2. ساخت پیست مسابقه

با تعریف یک سازنده برای کلاس RaceTrack امکان ساخت پیست مسابقه را فراهم کنید؛ این سازنده مسافت پیست بر حسب متر را به عنوان تنها پارامتر خود می‌گیرد (که از نوع int است):

int distance = 800;
var raceTrack = new RaceTrack(distance);

3. خودرو را برانید

متد RemoteControlCar.Drive() را پیاده‌سازی کنید که تعداد مترهای طی‌شده را بر اساس سرعت خودرو به‌روزرسانی می‌کند. همچنین متد RemoteControlCar.DistanceDriven() را پیاده‌سازی کنید تا تعداد مترهای طی‌شده توسط خودرو را برگرداند:

int speed = 5;
int batteryDrain = 2;
var car = new RemoteControlCar(speed, batteryDrain);
car.Drive();

car.DistanceDriven();
// => 5

4. بررسی خالی شدن باتری

متد RemoteControlCar.Drive() را به‌روزرسانی کنید تا باتری را بر اساس مصرف باتری خودرو خالی کند. همچنین متد RemoteControlCar.BatteryDrained() را پیاده‌سازی کنید که نشان می‌دهد آیا باتری خالی شده است:

int speed = 5;
int batteryDrain = 2;
var car = new RemoteControlCar(speed, batteryDrain);
car.Drive();

car.BatteryDrained();
// => false

5. ساخت خودروی کنترل از راه دور Nitro

پرفروش‌ترین خودروی کنترل از راه دور، Nitro است که حداکثر سرعت خیره‌کننده‌ی ۵۰ متر با مصرف باتری ۴٪ دارد. متد (ایستا) RemoteControlCar.Nitro() را پیاده‌سازی کنید تا خودرویی از این نوع را برگرداند:

var car = RemoteControlCar.Nitro();
car.Drive();
car.DistanceDriven();
// => 50

6. بررسی اینکه آیا خودروی کنترل از راه دور می‌تواند مسابقه را تمام کند

برای تمام کردن یک پیست مسابقه، خودرو باید بتواند مسافت پیست را طی کند. یعنی پیش از عبور از خط پایان، باتری‌اش را خالی نکند. متد 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
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
C# Exercism

آماده‌اید نیاز به سرعت را شروع کنید؟

در Exercism ثبت‌نام کنید تا C# را همراه با 62 مفهوم178 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.