Olá, você mudaria algo? To um pouco na dúvida em relação a classe Carro, você não acha que ficou com muito informação ou teria que ser assim mesmo?? Se puder dá uma ideia de como melhorar..
public class Carro {
private String marca;
private String modelo;
private String cor;
private int ano;
private double preco;
private Cliente dono;
private double velocidadeAtual;
private static int total;
private boolean ligado = false;
private double velocidadeMaxima;
private double trocarMacha;
// construtor
public Carro(String modelo, int ano, double preco, double velocidadeMaxima) {
Carro.total++;
System.out.println(" ");
System.out.println(" O total de carros é " + Carro.total);
this.marca = "Audi";
this.modelo = modelo;
this.ano = ano;
this.preco = preco;
this.velocidadeMaxima = velocidadeMaxima;
System.out.println("Está criado um carro da " + this.marca);
if(ano >= 1891){
this.ano = ano;
}else{
System.out.println("O ano informado está inválido. Por isso usaremos 2017!");
this.ano = 2017;
}
}
// metodos
public Boolean ligaedesliga() {
if (!this.ligado){
this.ligado = true;
System.out.println("O carro foi ligado");
} else {
this.ligado = false;
System.out.println("O carro foi desligado");
}
return this.ligado;
}
public void acelera(double quantidade) {
double velocidadeNova = this.velocidadeAtual + quantidade;
if(velocidadeNova < this.velocidadeMaxima) {
this.velocidadeAtual = velocidadeNova;
}
}
public void trocarMacha(double velocidadeAtual) {
if(this.velocidadeAtual <= 0) {
System.out.println("Esta no neutro");
}
if(this.velocidadeAtual >= 0 && this.velocidadeAtual < 20) {
System.out.println("Está na 1º macha");
}
if(this.velocidadeAtual >= 20 && this.velocidadeAtual < 40) {
System.out.println("Está na 2º macha");
}
if(this.velocidadeAtual >= 40 && this.velocidadeAtual < 60) {
System.out.println("Está na 3º macha");
}
if(this.velocidadeAtual >= 60 && this.velocidadeAtual < 90 ) {
System.out.println("Está na 4º macha");
}
if(this.velocidadeAtual >= 90) {
System.out.println("Está na 5º macha");
return;
}
}
public String getMarca() {
return this.marca;
}
public String getModelo() {
return this.modelo;
}
public void setModelo(String modelo) {
this.modelo = modelo;
}
public String getCor() {
return this.cor;
}
public void setCor(String cor) {
this.cor = cor;
}
public int getAno() {
return this.ano;
}
public void setAno(int ano) {
this.ano = ano;
}
public double getPreco() {
return this.preco;
}
public void setPreco(double preco) {
this.preco = preco;
}
public static int getTotal() {
return Carro.total;
}
public Boolean getLigado(){
return this.ligado;
}
public void setLigado(boolean ligado) {
this.ligado = ligado;
}
public Double getVelocidadeAtual(){
return this.velocidadeAtual;
}
public Double getVelocidadeMaxima(){
return this.velocidadeMaxima;
}
public double getTrocarMacha() {
return this.trocarMacha;
}
public void setDono(Cliente dono) {
this.dono = dono;
}
public Cliente getDono(){
return dono;
}
}
Aqui está a instanciação e a invocação de metodos
public class CriarCarro {
public static void main(String[] args) {
Carro primeiroCarro = new Carro("RS6",2019, 50000, 300);
primeiroCarro.setCor("vermelho");
System.out.println("Ano " + primeiroCarro.getAno());
System.out.println("Preço " + primeiroCarro.getPreco());
System.out.println("Cor " + primeiroCarro.getCor());
System.out.println("Modelos " + primeiroCarro.getModelo());
primeiroCarro.setLigado(true);
System.out.println("Ligou o carro: " + primeiroCarro.getLigado());
primeiroCarro.acelera(50);
System.out.println("Está na velocidade de " +
primeiroCarro.getVelocidadeAtual() + " por hora ");
primeiroCarro.trocarMacha(50);
System.out.println(primeiroCarro.getTrocarMacha());
Cliente gabriel = new Cliente();
gabriel.setNome("Gabriel Mendonça");
primeiroCarro.setDono(gabriel);
System.out.println(primeiroCarro.getDono().getNome());
primeiroCarro.getDono().setProfissao("programador");
Muito Obrigado!!!