Основним обʼєктно-орієнтованим конструктом у C# є клас, який поєднує дані (поля) та поведінку (методи). Поля й методи класу відомі як його члени.
Доступ до членів можна обмежити за допомогою модифікаторів доступу, два найпоширеніші з яких:
public: член доступний будь-якому коду (без обмежень).private: член доступний лише коду в тому самому класі.Можна уявити клас як шаблон для створення екземплярів цього класу. Щоб створити екземпляр класу (який також називають обʼєктом), використовують ключове слово new:
class Car
{
}
// Create two car instances
var myCar = new Car();
var yourCar = new Car();
Поля мають тип і їх можна визначити будь-де в класі.
Публічні поля визначають у PascalCase, а приватні - у camelCase, додаючи на початку символ підкреслення _:
class Car
{
// Accessible by anyone
public int Weight;
// Only accessible by code in this class
private string _color;
}
Полю можна за бажанням присвоїти початкове значення. Якщо поле не вказує початкового значення, йому буде встановлено типове значення його типу. Значення полів екземпляра можна читати й оновлювати за допомогою запису через крапку.
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;
Приватні поля зазвичай оновлюють як побічний ефект виклику методу. Такі методи зазвичай не повертають жодного значення, і в такому разі тип поверненого значення має бути void:
class CarImporter
{
private int _carsImported;
public void ImportCars(int numberOfCars)
{
// Update private field from public method
_carsImported = _carsImported + numberOfCars;
}
}
У цій вправі ми гратимемося з радіокерованою машиною, на яку нарешті назбирали грошей.
Машини починають роботу з повністю зарядженими батареями (100%). Щоразу, коли ми керуємо машиною за допомогою пульта, вона проїжджає 20 метрів і витрачає один відсоток заряду батареї.
Радіокерована машина має стильний світлодіодний дисплей, який показує дві частини інформації:
"Driven <METERS> meters"."Battery at <PERCENTAGE>%".Якщо заряд батареї становить 0%, керувати машиною більше не можна, і на дисплеї батареї буде показано "Battery empty".
На нас чекає шість завдань, кожне з яких працюватиме з примірниками радіокерованої машини.
Реалізуйте (статичний) метод RemoteControlCar.Buy(), щоб повернути новий примірник радіокерованої машини:
RemoteControlCar car = RemoteControlCar.Buy();
Реалізуйте метод RemoteControlCar.DistanceDisplay(), щоб повернути відстань у тому вигляді, у якому вона показана на світлодіодному дисплеї:
var car = RemoteControlCar.Buy();
car.DistanceDisplay();
// => "Driven 0 meters"
Реалізуйте метод RemoteControlCar.BatteryDisplay(), щоб повернути відсоток заряду батареї у тому вигляді, у якому він показаний на світлодіодному дисплеї:
var car = RemoteControlCar.Buy();
car.BatteryDisplay();
// => "Battery at 100%"
Реалізуйте метод RemoteControlCar.Drive(), який оновлює кількість пройдених метрів:
var car = RemoteControlCar.Buy();
car.Drive();
car.Drive();
car.DistanceDisplay();
// => "Driven 40 meters"
Оновіть метод RemoteControlCar.Drive(), щоб він оновлював відсоток заряду батареї:
var car = RemoteControlCar.Buy();
car.Drive();
car.Drive();
car.BatteryDisplay();
// => "Battery at 98%"
Оновіть метод RemoteControlCar.Drive() так, щоб він не збільшував пройдену відстань і не зменшував відсоток заряду батареї, коли батарея розряджена (0%):
var car = RemoteControlCar.Buy();
// Drain the battery
// ...
car.DistanceDisplay();
// => "Driven 2000 meters"
car.BatteryDisplay();
// => "Battery empty"
Зареєструйтеся на Exercism, щоб вивчати й опановувати C#, а також 62 концепції178 вправ та справжнє наставництво від людей, і все це безкоштовно.