Kurzusok
/
C#
C#
/
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ó funkcionalitáscsoportot határoznak meg. Elválasztja az osztály használatát annak implementációjától, ami lehetővé teszi több különböző implementáció létét, illetve olyan általános viselkedés támogatását, mint a formázás, az összehasonlítás vagy a konverzió.

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

public interface ILanguage
{
    string LanguageName { get; set; }
    string Speak();
}

public class ItalianTaveller : ILanguage, ICloneable
{
    public string LanguageName { get; set; } =  "Italiano";

    public string Speak()
    {
        return "Ciao mondo";
    }

    public object Clone()
    {
        ItalianTaveller it = new ItalianTaveller();
        it.LanguageName = this.LanguageName;
        return it;
    }
}

Az interfészben meghatározott összes műveletet implementálni kell.

Az interfészek a többi tag mellett példánymetódusokat és tulajdonságokat is tartalmazhatnak

Rendezés

Ahhoz, hogy egy objektum összehasonlítható legyen egy másikkal, implementálnia kell az IComparable<T> interfészt. Ennek az interfésznek egyetlen metódusa van, amelyet implementálni kell: int CompareTo(T other).

A CompareTo metódusnak három lehetséges visszatérési értéke van:

  • Nullánál kisebb érték: az aktuális objektum kisebb, mint a másik objektum.
  • Nullánál nagyobb érték: az aktuális objektum nagyobb, mint a másik objektum.
  • Az érték nulla: az aktuális objektum egyenlő a másik objektummal.

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 alkalmassá kell tenni arra, hogy mind a sorozatgyártású, mind a kísérleti modelleket kezelni tudja. A két típusú autót már megépítették, és neked kell megoldást találnod arra, hogy mindkettőt kezelni tudd a tesztpályán.

Ráadásul a sorozatgyártású autók kezdenek sikereket elérni. A csapatvezető szeretné fenntartani a versenyszellemet azzal, hogy közzéteszi a sorozatgyártású autók rangsorát.

1. Tedd lehetővé, hogy az autókat ugyanazon a tesztpályán lehessen vezetni

Adj hozzá egy metódust az IRemoteControlCar interfészhez, amellyel elérhetővé válnak a Drive() implementációi mindkét autótípus számára.

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

2. Tedd lehetővé, hogy össze lehessen hasonlítani a különböző modellek által a tesztpályán megtett távolságot

Adj hozzá egy tulajdonságot az IRemoteControlCar interfészhez, amellyel elérhetővé válnak a DistanceTravelled tulajdonság implementációi mindkét autótípus számára.

var prod = new ProductionRemoteControlCar();
TestTrack.Race(prod);
var exp = new ExperimentalRemoteControlCar();
TestTrack.Race(exp);
prod.DistanceTravelled
// => 10
exp.DistanceTravelled
// => 20

3. Tedd lehetővé a sorozatgyártású autók rangsorolását

Implementáld az IComparable<T> interfészt a ProductionRemoteControlCar osztályban. Az autók alapértelmezett rendezési sorrendje a győzelmek számának növekvő sorrendje legyen.

Implementáld a statikus TestTrack.GetRankedCars() metódust úgy, hogy a kapott autókat a győzelmek számának növekvő sorrendjében adja vissza.

var prc1 = new ProductionRemoteControlCar();
var prc2 = new ProductionRemoteControlCar();
prc1.NumberOfVictories = 3;
prc2.NumberOfVictories = 2;
var rankings = TestTrack.GetRankedCars(prc1, prc2);
// => rankings[1] == prc1
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
C# 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) C# nyelvet 62 fogalom178 feladat segítségével, valódi emberi mentorálással, mindez ingyen.