La construcción orientada a objetos principal en Java 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 se puede controlar 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
Car myCar = new Car();
Car yourCar = new Car();
Los campos tienen un tipo y un nombre (definidos en camelCase) y se pueden definir en cualquier parte de una clase (por convención, en PascalCase):
class Car {
// Accessible by anyone
public int weight;
// Only accessible by code in this class
private String color;
}
De manera opcional, puedes 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 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;
}
Car newCar = new Car();
newCar.weight; // => 2500
newCar.year; // => 0
// Update value of the field
newCar.year = 2018;
Por lo general, los campos privados se actualizan como efecto secundario de llamar a un método.
Estos 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 y pudiste comprarlo.
Los carros comienzan con la batería llena (100%). Cada vez que conduces el carro usando el control remoto, recorre 20 metros y consume uno por ciento de la batería.
El carro a control remoto tiene una vistosa 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, y cada una trabajará con instancias del carro a control remoto.
Implementa el método (estático) JedliksToyCar.buy() para que devuelva una instancia nueva del carro a control remoto:
JedliksToyCar car = JedliksToyCar.buy();
Implementa el método JedliksToyCar.distanceDisplay() para que devuelva la distancia tal como se muestra en la pantalla LED:
JedliksToyCar car = JedliksToyCar.buy();
car.distanceDisplay();
// => "Driven 0 meters"
Implementa el método JedliksToyCar.batteryDisplay() para que devuelva el porcentaje de batería tal como se muestra en la pantalla LED:
JedliksToyCar car = JedliksToyCar.buy();
car.batteryDisplay();
// => "Battery at 100%"
Implementa el método JedliksToyCar.drive() que actualiza el número de metros recorridos:
JedliksToyCar car = JedliksToyCar.buy();
car.drive();
car.drive();
car.distanceDisplay();
// => "Driven 40 meters"
Actualiza el método JedliksToyCar.drive() para que actualice el porcentaje de batería:
JedliksToyCar car = JedliksToyCar.buy();
car.drive();
car.drive();
car.batteryDisplay();
// => "Battery at 98%"
Actualiza el método JedliksToyCar.drive() para que no aumente la distancia recorrida ni reduzca el porcentaje de batería cuando la batería esté agotada (al 0%):
JedliksToyCar car = JedliksToyCar.buy();
// Drain the battery
// ...
car.distanceDisplay();
// => "Driven 2000 meters"
car.batteryDisplay();
// => "Battery empty"
Regístrate en Exercism para aprender y dominar Java con 26 conceptos158 ejercicios y mentoría humana real, todo gratis.