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;
}
}
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:
"Driven <METERS> meters"."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.
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();
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"
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%"
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"
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%"
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"
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.