Agora que temos uma compreensão fundamental de classes e objetos, vamos aprimorar nossa classe Car com mais métodos para aumentar sua utilidade. Adicionaremos métodos que representam ações que um carro pode realizar e propriedades sobre as quais podemos querer nos informar sobre um carro.
-
Abra o arquivo Car.java. Vamos adicionar um método que representa a aceleração do carro. Adicione este método à classe Car:
public void accelerate() {
System.out.println("The " + make + " " + model + " is accelerating.");
}
Este método não modifica nenhum dos atributos do carro; ele simplesmente exibe uma mensagem sobre a aceleração do carro.
-
Agora, vamos adicionar um método para frear. Adicione este método à classe Car:
public void brake() {
System.out.println("The " + make + " " + model + " is braking.");
}
Este método também apenas exibe uma mensagem sobre a ação do carro, como o método accelerate anterior.
-
Em seguida, vamos adicionar um método que fornece informações sobre o carro. Adicione este método:
public String getMakeAndModel() {
return make + " " + model;
}
Este método combina a marca e o modelo em uma única string e a retorna. Observe que o tipo de retorno é String, não void, pois este método está nos fornecendo informações.
-
Finalmente, vamos adicionar um método que determina se um carro é classificado como antigo. Em muitos lugares, um carro é considerado antigo se tiver mais de 25 anos. Adicione este método:
public boolean isAntique() {
int currentYear = java.time.Year.now().getValue();
return (currentYear - year) > 25;
}
Este método usa a classe Year embutida do Java para obter o ano atual. Em seguida, ele calcula a idade do carro e retorna true se tiver mais de 25 anos e false caso contrário.
-
Com esses métodos adicionais adicionados à nossa classe Car, vamos atualizar nosso arquivo CarDemo.java para usá-los. Abra CarDemo.java e substitua seu conteúdo por:
public class CarDemo {
public static void main(String[] args) {
Car myCar = new Car("Toyota", "Corolla", 2022);
Car classicCar = new Car("Ford", "Mustang", 1965);
myCar.displayInfo();
myCar.accelerate();
myCar.brake();
System.out.println(classicCar.getMakeAndModel() + " is an antique: " + classicCar.isAntique());
Car[] carArray = {myCar, classicCar};
for (Car car : carArray) {
System.out.println(car.getMakeAndModel() + " is an antique: " + car.isAntique());
}
}
}
Este novo método main realiza várias coisas:
- Ele cria dois objetos
Car: um carro moderno e um carro clássico.
- Ele chama nossos métodos
accelerate e brake recém-adicionados no objeto carro moderno.
- Ele usa os métodos
getMakeAndModel e isAntique no objeto carro clássico.
- Ele cria um array de objetos
Car e usa um loop for-each para iterar sobre eles, demonstrando como podemos lidar com coleções de objetos.
-
Salve ambos os arquivos e, em seguida, compile e execute o programa CarDemo:
javac ~/project/Car.java ~/project/CarDemo.java
java -cp ~/project CarDemo
Você deve ver uma saída semelhante a esta:
Car Information:
Make: Toyota
Model: Corolla
Year: 2022
The Toyota Corolla is accelerating.
The Toyota Corolla is braking.
Ford Mustang is an antique: true
Toyota Corolla is an antique: false
Ford Mustang is an antique: true
Parabéns! Você estendeu significativamente sua classe Car e criou um programa mais intrincado usando objetos. Isso demonstra como a programação orientada a objetos pode ser usada para modelar conceitos do mundo real em código. Cada objeto carro agora possui seus próprios dados (marca, modelo, ano) e ações (acelerar, frear, etc.), assim como os carros reais.
-
Adicionamos métodos à nossa classe Car que representam ações (accelerate() e brake()). Embora esses métodos não alterem o estado do carro em nossa implementação atual, em um programa mais complexo, eles poderiam modificar atributos como velocidade ou nível de combustível.
-
Adicionamos getMakeAndModel(), que combina duas informações em uma única string. Este é um padrão comum na programação orientada a objetos — criar métodos que oferecem acesso conveniente aos dados do objeto.
-
O método isAntique() mostra como os dados do objeto (o ano do carro) podem ser combinados com informações externas (o ano atual) para derivar novas informações sobre um objeto.
-
Em nossa classe CarDemo, demonstramos como criar e usar vários objetos, como chamar vários métodos nesses objetos e como iterar em um array de objetos.
Este exemplo demonstra o poder da programação orientada a objetos. Criamos uma classe Car que encapsula dados (marca, modelo, ano) e comportamento (acelerar, frear, isAntique). Cada objeto Car que criamos é independente, com seu próprio conjunto exclusivo de dados, mas todos seguem o mesmo conjunto de ações conforme definido pela classe.