Tracks
/
C#
C#
/
Übungen
/
Need for Speed
Need for Speed

Need for Speed

Lernübung

Einführung

Konstruktoren

Eine Instanz einer Klasse erstellst du, indem du ihren Konstruktor mit dem new-Operator aufrufst. Ein Konstruktor ist eine besondere Art von Methode, deren Ziel es ist, eine neu erstellte Instanz zu initialisieren. Konstruktoren sehen aus wie normale Methoden, haben aber keinen Rückgabetyp und tragen denselben Namen wie die Klasse.

class Library
{
    private int books;

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

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

Wie normale Methoden können Konstruktoren Parameter haben. Die Parameter eines Konstruktors werden üblicherweise in (privaten) Feldern gespeichert, um später auf sie zuzugreifen, oder sie werden für eine einmalige Berechnung verwendet. Argumente kannst du an Konstruktoren genauso übergeben wie an normale Methoden.

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)

Anleitung

In dieser Übung organisierst du Rennen zwischen verschiedenen Arten von ferngesteuerten Autos. Jedes Auto hat seine eigene Geschwindigkeit und seinen eigenen Batterieverbrauch.

Autos starten mit einer vollen Batterie (100 %). Jedes Mal, wenn du das Auto mit der Fernbedienung fährst, legt es die Geschwindigkeit des Autos in Metern zurück und verringert den verbleibenden Batteriestand in Prozent um seinen Batterieverbrauch.

Wenn der Batteriestand eines Autos unter dem Prozentsatz seines Batterieverbrauchs liegt, kannst du das Auto nicht mehr fahren.

Jede Rennstrecke hat ihre eigene Länge. Autos werden getestet, indem geprüft wird, ob sie die Strecke beenden können, ohne dass die Batterie leer wird.

Du hast sechs Aufgaben, die jeweils mit Instanzen von ferngesteuerten Autos arbeiten.

1. Ein ferngesteuertes Auto erstellen

Ermögliche das Erstellen eines ferngesteuerten Autos, indem du einen Konstruktor für die Klasse RemoteControlCar definierst, der die Geschwindigkeit des Autos in Metern und den Batterieverbrauch in Prozent als seine beiden Parameter (beide vom Typ int) entgegennimmt:

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

2. Eine Rennstrecke erstellen

Ermögliche das Erstellen einer Rennstrecke, indem du einen Konstruktor für die Klasse RaceTrack definierst, der die Länge der Strecke in Metern als einzigen Parameter (vom Typ int) entgegennimmt:

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

3. Das Auto fahren

Implementiere die Methode RemoteControlCar.Drive(), die die Anzahl der gefahrenen Meter basierend auf der Geschwindigkeit des Autos aktualisiert. Implementiere außerdem die Methode RemoteControlCar.DistanceDriven(), die die Anzahl der vom Auto gefahrenen Meter zurückgibt:

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

car.DistanceDriven();
// => 5

4. Eine leere Batterie erkennen

Passe die Methode RemoteControlCar.Drive() an, sodass sie die Batterie entsprechend dem Batterieverbrauch des Autos entlädt. Implementiere außerdem die Methode RemoteControlCar.BatteryDrained(), die angibt, ob die Batterie leer ist:

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

car.BatteryDrained();
// => false

5. Das ferngesteuerte Nitro-Auto erstellen

Das meistverkaufte ferngesteuerte Auto ist das Nitro. Es hat eine beeindruckende Höchstgeschwindigkeit von 50 Metern bei einem Batterieverbrauch von 4 %. Implementiere die (statische) Methode RemoteControlCar.Nitro(), die diesen Autotyp zurückgibt:

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

6. Prüfen, ob ein ferngesteuertes Auto ein Rennen beenden kann

Um eine Rennstrecke zu beenden, muss ein Auto die Länge der Strecke fahren können. Das bedeutet, dass seine Batterie nicht leer sein darf, bevor es die Ziellinie überquert hat. Implementiere die Methode RaceTrack.TryFinishTrack(), die eine Instanz von RemoteControlCar als Parameter entgegennimmt und true zurückgibt, wenn das Auto die Rennstrecke beenden kann; andernfalls gib false zurück:

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

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

raceTrack.TryFinishTrack(car);
// => true
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
C# Exercism

Bereit, mit Need for Speed zu starten?

Melde dich bei Exercism an, um C# mit 62 Konzepte178 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.