A principal construção orientada a objetos em Java é a classe, que combina dados (campos) e comportamento (métodos). Os campos e os métodos de uma classe são os seus membros.
O acesso aos membros pode ser controlado através de modificadores de acesso. Os dois mais comuns são:
public: qualquer código pode aceder ao membro (sem restrições).private: só o código da mesma classe pode aceder ao membro.Podes pensar numa classe como um modelo para criar instâncias dessa classe.
Para criar uma instância de uma classe (também conhecida como objeto), usa-se a palavra-chave new:
class Car {
}
// Create two car instances
Car myCar = new Car();
Car yourCar = new Car();
Os campos têm um tipo e um nome (definido em camelCase) e podem ser definidos em qualquer parte de uma classe (por convenção, escritos em PascalCase):
class Car {
// Accessible by anyone
public int weight;
// Only accessible by code in this class
private String color;
}
É possível atribuir opcionalmente um valor inicial a um campo. Se um campo não especificar um valor inicial, fica com o valor predefinido do seu tipo. Os valores dos campos de uma instância podem ser consultados e atualizados com a notação de ponto.
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;
Os campos privados são normalmente atualizados como efeito secundário da chamada de um método.
Estes métodos normalmente não devolvem nenhum valor, caso em que o tipo devolvido deve ser void:
class CarImporter {
private int carsImported;
public void importCars(int numberOfCars)
{
// Update private field from public method
carsImported = carsImported + numberOfCars;
}
}
Neste exercício vais brincar com um carro telecomandado, para o qual finalmente poupaste dinheiro suficiente para o comprar.
Os carros começam com a bateria cheia (100%). Cada vez que conduzes o carro com o comando, ele percorre 20 metros e gasta um por cento da bateria.
O carro telecomandado tem um ecrã LED vistoso que mostra duas informações:
"Driven <METERS> meters"."Battery at <PERCENTAGE>%".Se a bateria estiver a 0%, já não consegues conduzir o carro e o ecrã da bateria mostra "Battery empty".
Tens seis tarefas e cada uma delas trabalha com instâncias de carros telecomandados.
Implementa o método (estático) JedliksToyCar.buy() para devolver uma instância de um carro telecomandado novo em folha:
JedliksToyCar car = JedliksToyCar.buy();
Implementa o método JedliksToyCar.distanceDisplay() para devolver a distância tal como aparece no ecrã LED:
JedliksToyCar car = JedliksToyCar.buy();
car.distanceDisplay();
// => "Driven 0 meters"
Implementa o método JedliksToyCar.batteryDisplay() para devolver a percentagem da bateria tal como aparece no ecrã LED:
JedliksToyCar car = JedliksToyCar.buy();
car.batteryDisplay();
// => "Battery at 100%"
Implementa o método JedliksToyCar.drive() que atualiza o número de metros percorridos:
JedliksToyCar car = JedliksToyCar.buy();
car.drive();
car.drive();
car.distanceDisplay();
// => "Driven 40 meters"
Atualiza o método JedliksToyCar.drive() para atualizar a percentagem da bateria:
JedliksToyCar car = JedliksToyCar.buy();
car.drive();
car.drive();
car.batteryDisplay();
// => "Battery at 98%"
Atualiza o método JedliksToyCar.drive() para não aumentar a distância percorrida nem diminuir a percentagem da bateria quando a bateria está descarregada (a 0%):
JedliksToyCar car = JedliksToyCar.buy();
// Drain the battery
// ...
car.distanceDisplay();
// => "Driven 2000 meters"
car.batteryDisplay();
// => "Battery empty"
Inscreve-te no Exercism para aprenderes e dominares Java com 26 conceitos158 exercícios, e mentoria humana real, tudo grátis.