Kurzusok
/
C#
C#
/
Feladatok
/
Jedlik játékai
Jedlik játékai

Jedlik játékai

Tanulófeladat

Bevezetés

Osztályok

A C# elsődleges objektumorientált építőeleme az osztály, amely adatok (mezők) és viselkedés (metódusok) kombinációja. Az osztály mezőit és metódusait tagoknak nevezzük.

A tagokhoz való hozzáférést hozzáférés-módosítókkal lehet korlátozni, amelyek közül a két leggyakoribb:

  • public: a tagot bármely kód elérheti (nincs megkötés).
  • private: a tagot csak az ugyanabban az osztályban lévő kód érheti el.

Egy osztályra gondolhatsz úgy, mint egy sablonra, amellyel az osztály példányait hozhatod létre. Egy osztály példányának (más néven objektumnak) a létrehozásához a new kulcsszót használjuk:

class Car
{
}

// Create two car instances
var myCar = new Car();
var yourCar = new Car();

A mezőknek típusuk van, és az osztály bármely pontján definiálhatók. A nyilvános mezőket PascalCase-ben, a privát mezőket camelCase-ben definiáljuk, és egy alulvonás (_) előzi meg őket:

class Car
{
    // Accessible by anyone
    public int Weight;

    // Only accessible by code in this class
    private string _color;
}

Egy mezőnek opcionálisan adhatsz kezdőértéket. Ha egy mező nem ad meg kezdőértéket, akkor a típusának alapértelmezett értékét kapja. Egy példány mezőértékei pontjelöléssel érhetők el és frissíthetők.

class Car
{
    // Will be set to specified value
    public int Weight = 2500;

    // Will be set to default value (0)
    public int Year;
}

var newCar = new Car();
newCar.Weight; // => 2500
newCar.Year;   // => 0

// Update value of the field
newCar.Year = 2018;

A privát mezőket általában egy metódus meghívásának mellékhatásaként frissítjük. Az ilyen metódusok általában nem adnak vissza értéket, ilyenkor a visszatérési típus void legyen:

class CarImporter
{
    private int _carsImported;

    public void ImportCars(int numberOfCars)
    {
        // Update private field from public method
        _carsImported = _carsImported + numberOfCars;
    }
}

Utasítások

Ebben a feladatban egy távirányítású autóval fogsz játszani, amelyre végre összegyűjtöttél annyi pénzt, hogy megvedd.

Az autók feltöltött (100%-os) akkumulátorral indulnak. Valahányszor elindítod az autót a távirányítóval, 20 métert tesz meg, és az akkumulátor töltöttsége egy százalékkal csökken.

A távirányítású autón van egy menő LED-kijelző, amely két adatot mutat:

  • A teljes megtett távolságot, így jelenik meg: "Driven <METERS> meters".
  • Az akkumulátor hátralévő töltöttségét, így jelenik meg: "Battery at <PERCENTAGE>%".

Ha az akkumulátor 0%-on áll, nem tudod tovább vezetni az autót, és az akkumulátor kijelzője ezt mutatja: "Battery empty".

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

1. Vásárolj egy vadonatúj távirányítású autót

A (statikus) RemoteControlCar.Buy() metódust úgy valósítsd meg, hogy egy vadonatúj távirányítású autópéldányt adjon vissza:

RemoteControlCar car = RemoteControlCar.Buy();

2. Jelenítsd meg a megtett távolságot

A RemoteControlCar.DistanceDisplay() metódust úgy valósítsd meg, hogy a LED-kijelzőn látható távolságot adja vissza:

var car = RemoteControlCar.Buy();
car.DistanceDisplay();
// => "Driven 0 meters"

3. Jelenítsd meg az akkumulátor töltöttségi szintjét

A RemoteControlCar.BatteryDisplay() metódust úgy valósítsd meg, hogy az akkumulátor töltöttségi szintjét a LED-kijelzőn látható formában adja vissza:

var car = RemoteControlCar.Buy();
car.BatteryDisplay();
// => "Battery at 100%"

4. Frissítsd a megtett méterek számát vezetéskor

A RemoteControlCar.Drive() metódust úgy valósítsd meg, hogy frissítse a megtett méterek számát:

var car = RemoteControlCar.Buy();
car.Drive();
car.Drive();
car.DistanceDisplay();
// => "Driven 40 meters"

5. Frissítsd az akkumulátor töltöttségi szintjét vezetéskor

A RemoteControlCar.Drive() metódust frissítsd úgy, hogy az akkumulátor töltöttségi szintjét is frissítse:

var car = RemoteControlCar.Buy();
car.Drive();
car.Drive();
car.BatteryDisplay();
// => "Battery at 98%"

6. Akadályozd meg a vezetést, amikor lemerül az akkumulátor

A RemoteControlCar.Drive() metódust frissítsd úgy, hogy amikor az akkumulátor lemerült (0%-on áll), ne növelje a megtett távolságot, és ne csökkentse az akkumulátor töltöttségi szintjét:

var car = RemoteControlCar.Buy();

// Drain the battery
// ...

car.DistanceDisplay();
// => "Driven 2000 meters"

car.BatteryDisplay();
// => "Battery empty"
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
C# Exercism

Készen állsz elkezdeni a(z) Jedlik játékai 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.