Il principale costrutto orientato agli oggetti in Java è la classe, che è una combinazione di dati (campi) e comportamento (metodi). I campi e i metodi di una classe sono noti come i suoi membri.
L'accesso ai membri può essere controllato tramite i modificatori di accesso, i due più comuni dei quali sono:
public: il membro è accessibile da qualsiasi codice (nessuna restrizione).private: il membro è accessibile solo dal codice nella stessa classe.Puoi pensare a una classe come a un modello per creare istanze di quella classe.
Per creare un'istanza di una classe (nota anche come oggetto), si usa la parola chiave new:
class Car {
}
// Create two car instances
Car myCar = new Car();
Car yourCar = new Car();
I campi hanno un tipo e un nome (definito in camelCase) e possono essere definiti ovunque in una classe (per convenzione scritta in PascalCase):
class Car {
// Accessible by anyone
public int weight;
// Only accessible by code in this class
private String color;
}
Si può assegnare facoltativamente un valore iniziale a un campo. Se un campo non specifica un valore iniziale, viene impostato al valore predefinito del suo tipo. I valori dei campi di un'istanza possono essere letti e aggiornati usando la notazione con il 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;
I campi privati vengono solitamente aggiornati come effetto collaterale della chiamata a un metodo.
Tali metodi di solito non restituiscono alcun valore, nel qual caso il tipo restituito dovrebbe essere void:
class CarImporter {
private int carsImported;
public void importCars(int numberOfCars)
{
// Update private field from public method
carsImported = carsImported + numberOfCars;
}
}
In questo esercizio giocherai con un'auto radiocomandata, che finalmente hai risparmiato abbastanza soldi per comprare.
Le auto partono con la batteria completamente carica (100%). Ogni volta che guidi l'auto con il radiocomando, percorre 20 metri e consuma l'uno per cento della batteria.
L'auto radiocomandata ha un sofisticato display a LED che mostra due informazioni:
"Driven <METERS> meters"."Battery at <PERCENTAGE>%".Se la batteria è allo 0%, non puoi più guidare l'auto e il display della batteria mostrerà "Battery empty".
Hai sei attività, ognuna delle quali lavorerà con istanze di auto radiocomandata.
Implementa il metodo (statico) JedliksToyCar.buy() in modo che restituisca un'istanza nuova di zecca di auto radiocomandata:
JedliksToyCar car = JedliksToyCar.buy();
Implementa il metodo JedliksToyCar.distanceDisplay() in modo che restituisca la distanza così come viene mostrata sul display a LED:
JedliksToyCar car = JedliksToyCar.buy();
car.distanceDisplay();
// => "Driven 0 meters"
Implementa il metodo JedliksToyCar.batteryDisplay() in modo che restituisca la percentuale della batteria così come viene mostrata sul display a LED:
JedliksToyCar car = JedliksToyCar.buy();
car.batteryDisplay();
// => "Battery at 100%"
Implementa il metodo JedliksToyCar.drive() che aggiorna il numero di metri percorsi:
JedliksToyCar car = JedliksToyCar.buy();
car.drive();
car.drive();
car.distanceDisplay();
// => "Driven 40 meters"
Aggiorna il metodo JedliksToyCar.drive() in modo che aggiorni la percentuale della batteria:
JedliksToyCar car = JedliksToyCar.buy();
car.drive();
car.drive();
car.batteryDisplay();
// => "Battery at 98%"
Aggiorna il metodo JedliksToyCar.drive() in modo che non aumenti la distanza percorsa né diminuisca la percentuale della batteria quando la batteria è scarica (allo 0%):
JedliksToyCar car = JedliksToyCar.buy();
// Drain the battery
// ...
car.distanceDisplay();
// => "Driven 2000 meters"
car.batteryDisplay();
// => "Battery empty"
Iscriviti a Exercism per imparare e padroneggiare Java con 26 concetti158 esercizi e il mentoring di persone reali, tutto gratis.