Kurzusok
/
Java
Java
/
Feladatok
/
Távirányító-verseny
Távirányító-verseny

Távirányító-verseny

Tanulófeladat

Bevezetés

Interfészek

Az interfész egy olyan típus, amelynek tagjai egy összetartozó funkciókészletet definiálnak. Elválasztja az osztály használatát a megvalósítástól, ami lehetővé teszi több különböző implementációt, vagy támogatja az olyan általános viselkedést, mint a formázás, az összehasonlítás vagy a konverzió.

Az interfész szintaxisa hasonló az osztályéhoz, azzal a különbséggel, hogy itt a metódusok csak szignatúraként jelennek meg, törzs nélkül.

public interface Language {
    String getLanguageName();
    String speak();
}

public class ItalianTraveller implements Language, Cloneable {

    // from Language interface
    public String getLanguageName() {
        return "Italiano";
    }

    // from Language interface
    public String speak() {
        return "Ciao mondo";
    }

    // from Cloneable interface
    public Object clone() {
        ItalianTraveller it = new ItalianTraveller();
        return it;
    }
}

Az interfész által definiált összes műveletet meg kell valósítania az implementáló osztálynak.

Az interfészek általában példánymetódusokat tartalmaznak.

A Java osztálykönyvtárban található interfészekre példa a fent bemutatott Cloneable mellett a Comparable<T>. A Comparable<T> interfészt ott érdemes megvalósítani, ahol a gyűjteményekben alapértelmezett általános rendezési sorrendre van szükség.

Utasítások

Ebben a feladatban ismét a távirányítós autókkal fogsz dolgozni.

Kifejlesztettek egy kísérleti autót, és a tesztpályát is át kell alakítani, hogy mind a sorozatgyártott, mind a kísérleti modelleket kezelni tudja. A két autótípus már elkészült, és neked kell megoldást találnod arra, hogy a tesztpálya mindkettővel boldoguljon.

Ráadásul a sorozatgyártott autók kezdenek sikereket elérni. A csapatfőnök szeretné fenntartani a versenyszellemet, ezért közzé akarja tenni a sorozatgyártott autók rangsorát.

1. Valósítsd meg az interfészt

Adj hozzá két metódust a RemoteControlCar interfészhez:

  • drive(), amely nem ad vissza semmit, és
  • getDistanceTravelled(), amely egy int értéket ad vissza.

Ezután gondoskodj róla, hogy a ProductionRemoteControlCar és az ExperimentalRemoteControlCar megvalósítsa a RemoteControlCar interfészt. Ez magában foglalja az interfész által megkövetelt összes metódus megvalósítását is.

2. Vezetés

A .drive() minden egyes hívásakor az autónak egy bizonyos távolságot kell megtennie:

  • egy ProductionRemoteControlCar 10 egységet tesz meg,
  • egy ExperimentalRemoteControlCar pedig 20 egységet.

A .getDistanceTravelled() metódusnak azt kell visszaadnia, hány egységet tett meg az autó a teljes élettartama alatt.

ProductionRemoteControlCar prod = new ProductionRemoteControlCar();
prod.drive();
prod.getDistanceTravelled();
// => 10
        
ExperimentalRemoteControlCar exp = new ExperimentalRemoteControlCar();
exp.drive();
exp.getDistanceTravelled();
// => 20

3. Verseny

Valósítsd meg a TestTrack.race(RemoteControlCar car) metódust, amelyben a car-ok drive()-olhatnak.

TestTrack.race(new ProductionRemoteControlCar());
TestTrack.race(new ExperimentalRemoteControlCar());
// this should execute without an exception being thrown

4. Tedd rendezhetővé a sorozatgyártott autókat

Valósítsd meg a Comparable<T> interfészt a ProductionRemoteControlCar osztályban. Az autók alapértelmezett rendezési sorrendje a győzelmek számának csökkenő sorrendje legyen.

Valósítsd meg a statikus TestTrack.getRankedCars() metódust, amely a kapott autókat a győzelmek számának csökkenő sorrendjében adja vissza.

ProductionRemoteControlCar prc1 = new ProductionRemoteControlCar();
ProductionRemoteControlCar prc2 = new ProductionRemoteControlCar();
prc1.setNumberOfVictories(2);
prc2.setNumberOfVictories(3);
List<ProductionRemoteControlCar> unsortedCars = new ArrayList<>();
unsortedCars.add(prc1);
unsortedCars.add(prc2);
List<ProductionRemoteControlCar> rankings = TestTrack.getRankedCars(unsortedCars);
// => rankings.get(0) == prc2
// => rankings.get(1) == prc1
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Java Exercism

Készen állsz elkezdeni a(z) Távirányító-verseny 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.