Kurzusok
/
Java
Java
/
Feladatok
/
Need for Speed
Need for Speed

Need for Speed

Tanulófeladat

Bevezetés

Konstruktorok

Egy osztály példányát úgy hozod létre, hogy a new operátoron keresztül meghívod a konstruktorát. A konstruktor egy különleges metódus, amelynek az a célja, hogy inicializálja az újonnan létrehozott példányt. A konstruktorok úgy néznek ki, mint a hagyományos metódusok, de nincs visszatérési típusuk, és a nevük megegyezik az osztály nevével.

class Library {
    private int books;

    public Library() {
        // Initialize the books field
        this.books = 10;
    }
}

// This will call the constructor
var library = new Library();

A hagyományos metódusokhoz hasonlóan a konstruktoroknak is lehetnek paramétereik. A konstruktor paramétereit általában (privát) mezőkként tároljuk el, hogy később hozzáférjünk hozzájuk, vagy épp valamilyen egyszeri számításban használjuk fel őket. A konstruktoroknak ugyanúgy adhatunk át argumentumokat, mint a hagyományos metódusoknak.

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);

Utasítások

Ebben a feladatban különböző típusú távirányítós autók közötti versenyeket fogsz szervezni. Minden autónak megvannak a saját sebesség- és akkumulátorfogyasztási jellemzői.

Az autók teljesen feltöltött (100%-os) akkumulátorral indulnak. Valahányszor elvezeted az autót a távirányítóval, annyi métert tesz meg, amennyi az autó sebessége, és a hátralévő akkumulátorszázalékot az akkumulátorfogyasztásával csökkenti.

Ha egy autó akkumulátora az akkumulátorfogyasztása százaléka alá csökken, többé nem tudod vezetni az autót.

Minden versenypályának megvan a maga hossza. Az autókat úgy tesztelik, hogy képesek-e úgy teljesíteni a pályát, hogy közben nem merül le az akkumulátoruk.

Hat részfeladat vár rád, amelyek mindegyike távirányítós autók példányaival dolgozik.

1. Távirányítós autó létrehozása

Tedd lehetővé egy távirányítós autó létrehozását úgy, hogy definiálsz egy konstruktort a NeedForSpeed osztályhoz, amely két paraméterként átveszi az autó méterben mért sebességét és az akkumulátorfogyasztás százalékát (mindkettő int típusú):

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

2. Versenypálya létrehozása

Tedd lehetővé egy versenypálya létrehozását úgy, hogy definiálsz egy konstruktort a RaceTrack osztályhoz, amely egyetlen paraméterként átveszi a pálya méterben mért hosszát (int típusú):

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

3. Vezesd az autót

Valósítsd meg a NeedForSpeed.drive() metódust, amely az autó sebessége alapján frissíti a megtett méterek számát. Valósítsd meg a NeedForSpeed.distanceDriven() metódust is, amely visszaadja az autó által megtett méterek számát:

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

car.distanceDriven();
// => 5

4. A lemerült akkumulátor ellenőrzése

Frissítsd a NeedForSpeed.drive() metódust, hogy az autó akkumulátorfogyasztása alapján merítse az akkumulátort. Valósítsd meg a NeedForSpeed.batteryDrained() metódust is, amely jelzi, hogy az akkumulátor már túlságosan lemerült-e a vezetéshez:

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

car.batteryDrained();
// => false

5. A Nitro távirányítós autó létrehozása

A legkelendőbb távirányítós autó a Nitro, amelynek lenyűgöző, 50 méteres végsebessége van 4%-os akkumulátorfogyasztás mellett. Valósítsd meg a (statikus) NeedForSpeed.nitro() metódust, amely ezt a típusú autót adja vissza:

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

6. Annak ellenőrzése, hogy egy távirányítós autó célba tud-e érni egy versenyen

Ahhoz, hogy egy autó célba érjen egy versenyen, képesnek kell lennie megtenni a verseny távját. Ez azt jelenti, hogy nem merül le az akkumulátora, mielőtt átlépi a célvonalat. Valósítsd meg a RaceTrack.canFinishRace() metódust, amely paraméterként egy NeedForSpeed példányt vesz át, és true-t ad vissza, ha az autó célba tud érni a versenyen; ellenkező esetben false-t ad vissza:

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
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Java Exercism

Készen állsz elkezdeni a(z) Need for Speed feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Java nyelvet 26 fogalom158 feladat segítségével, valódi emberi mentorálással, mindez ingyen.