La principal construcción orientada a objetos en C# es la clase, que es una combinación de datos (campos) y comportamiento (métodos). Los campos y métodos de una clase se conocen como sus miembros.
El acceso a los miembros se puede restringir mediante modificadores de acceso, y 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 se pueden definir en cualquier parte de una clase.
Los campos públicos se definen en PascalCase y los campos privados se definen en camelCase y llevan el prefijo 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 establece en el valor predeterminado de su tipo. Los valores de los campos de una instancia se pueden consultar y actualizar usando 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. Esos métodos normalmente no devuelven ningún valor, en cuyo caso el tipo de retorno 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 jugar con un carro a control remoto, para el que por fin ahorraste suficiente dinero.
Los carros empiezan con la batería llena (100 %). Cada vez que conduces el carro con el control remoto, recorre 20 metros y consume el uno por ciento de la batería.
El carro a control remoto tiene una elegante pantalla LED que muestra dos datos:
"Driven <METERS> meters"."Battery at <PERCENTAGE>%".Si la batería está al 0 %, ya no puedes conducir el carro y la pantalla de la batería mostrará "Battery empty".
Tienes seis tareas, cada una de las cuales trabajará con instancias del carro a control remoto.
Implementa el método (static) RemoteControlCar.Buy() para devolver una instancia nueva del carro a control remoto:
RemoteControlCar car = RemoteControlCar.Buy();
Implementa el método RemoteControlCar.DistanceDisplay() para devolver 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 devolver 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.