El principal constructo orientado a objetos de C# es la clase, que combina datos (campos) y comportamiento (métodos). Los campos y los métodos de una clase se conocen como sus miembros.
El acceso a los miembros puede restringirse mediante modificadores de acceso, de los cuales los dos más comunes son:
public: se puede acceder al miembro desde cualquier código (sin restricciones).private: solo se puede acceder al miembro desde código de la misma clase.Puedes pensar en una clase como una plantilla para crear instancias de esa clase. Para crear una instancia de una clase (también conocida como objeto), se usa la palabra clave new:
class Car
{
}
// Create two car instances
var myCar = new Car();
var yourCar = new Car();
Los campos tienen un tipo y pueden definirse en cualquier parte de una clase.
Los campos públicos se definen en PascalCase y los privados en camelCase y van precedidos de un guion bajo _:
class Car
{
// Accessible by anyone
public int Weight;
// Only accessible by code in this class
private string _color;
}
Opcionalmente, se puede asignar un valor inicial a un campo. Si un campo no especifica un valor inicial, se le asignará el valor predeterminado de su tipo. Se puede acceder a los valores de los campos de una instancia y actualizarlos mediante la notación de punto.
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;
Los campos privados suelen actualizarse como efecto secundario de llamar a un método. Normalmente, estos métodos no devuelven ningún valor, en cuyo caso el tipo devuelto debe ser void:
class CarImporter
{
private int _carsImported;
public void ImportCars(int numberOfCars)
{
// Update private field from public method
_carsImported = _carsImported + numberOfCars;
}
}
En este ejercicio vas a estar jugando con un coche teledirigido, para el que por fin has ahorrado suficiente dinero.
Los coches empiezan con la batería llena (100 %). Cada vez que conduces el coche con el mando a distancia, recorre 20 metros y consume un 1 % de la batería.
El coche teledirigido tiene una moderna pantalla LED que muestra dos datos:
"Driven <METERS> meters"."Battery at <PERCENTAGE>%".Si la batería está al 0 %, ya no puedes conducir el coche y la pantalla de la batería mostrará "Battery empty".
Tienes seis tareas, cada una de las cuales trabajará con instancias de coche teledirigido.
Implementa el método (estático) RemoteControlCar.Buy() para que devuelva una instancia nueva de coche teledirigido:
RemoteControlCar car = RemoteControlCar.Buy();
Implementa el método RemoteControlCar.DistanceDisplay() para que devuelva la distancia tal como se muestra en la pantalla LED:
var car = RemoteControlCar.Buy();
car.DistanceDisplay();
// => "Driven 0 meters"
Implementa el método RemoteControlCar.BatteryDisplay() para que devuelva el porcentaje de batería tal como se muestra en la pantalla LED:
var car = RemoteControlCar.Buy();
car.BatteryDisplay();
// => "Battery at 100%"
Implementa el método RemoteControlCar.Drive() que actualiza el número de metros recorridos:
var car = RemoteControlCar.Buy();
car.Drive();
car.Drive();
car.DistanceDisplay();
// => "Driven 40 meters"
Actualiza el método RemoteControlCar.Drive() para que actualice el porcentaje de batería:
var car = RemoteControlCar.Buy();
car.Drive();
car.Drive();
car.BatteryDisplay();
// => "Battery at 98%"
Actualiza el método RemoteControlCar.Drive() para que no aumente la distancia recorrida ni disminuya el porcentaje de batería cuando la batería esté agotada (al 0 %):
var car = RemoteControlCar.Buy();
// Drain the battery
// ...
car.DistanceDisplay();
// => "Driven 2000 meters"
car.BatteryDisplay();
// => "Battery empty"
Regístrate en Exercism para aprender y dominar C# con 62 conceptos178 ejercicios y mentoría humana real, todo gratis.