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

نیاز به سرعت

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

مقدمه

سازنده

برای ساختن یک نمونه از یک کلاس، سازنده‌ی آن را با عملگر 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. ساخت یک خودروی کنترل از راه دور

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

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

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

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

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

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

«متد» NeedForSpeed.drive() را پیاده‌سازی کنید که تعداد مترهای پیموده‌شده را بر اساس سرعت خودرو به‌روزرسانی می‌کند. همچنین متد NeedForSpeed.distanceDriven() را پیاده‌سازی کنید تا تعداد مترهای پیموده‌شده توسط خودرو را برگرداند:

int speed = 5;
int batteryDrain = 2;
var car = new NeedForSpeed(speed, batteryDrain);
car.drive();

car.distanceDriven();
// => 5

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

متد NeedForSpeed.drive() را به‌روزرسانی کنید تا باتری را بر اساس مصرف باتری خودرو خالی کند. همچنین متد NeedForSpeed.batteryDrained() را پیاده‌سازی کنید که نشان می‌دهد آیا باتری برای راندن بیش از حد خالی شده است یا نه:

int speed = 5;
int batteryDrain = 2;
var car = new NeedForSpeed(speed, batteryDrain);
car.drive();

car.batteryDrained();
// => false

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

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

var car = NeedForSpeed.nitro();
car.drive();
car.distanceDriven();
// => 50

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

برای به پایان رساندن یک مسابقه، خودرو باید بتواند فاصله‌ی مسابقه را بپیماید. یعنی باتری‌اش نباید پیش از عبور از خط پایان تمام شود. متد RaceTrack.canFinishRace() را پیاده‌سازی کنید که یک نمونه‌ی NeedForSpeed را به عنوان پارامتر خود می‌گیرد و اگر خودرو بتواند مسابقه را به پایان برساند true را برمی‌گرداند؛ در غیر این صورت false را برگردانید:

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

int distance1 = 100;
var race1 = new RaceTrack(distance1);

int distance2 = 300;
var race2 = new RaceTrack(distance2);

race1.canFinishRace(car);
// => true

race2.canFinishRace(car);
// => false
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Java Exercism

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

در Exercism ثبت‌نام کنید تا Java را همراه با 26 مفهوم158 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.