Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Está certo? Mudaria algo?

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!!!

2 respostas
solução!

Olá Gabriel,

dando meus 2¢, primeiramente gostaria de dizer que achei seu código muito bom.

Acredito que a primeira coisa é saber se compila e se pra vc faz sentido, inclusive se consegue implementar tudo que tem estudado. Depois disso é claro, melhorar.

Mas, rapidamente anotei alguns pontos que gostaria de observar, nada com muito importância, mas como disse, meus 2¢.

  • this.marca = "Audi": Somente carros desta marca seriam criados? Não seria melhor deixar para definir a marca na construção do objeto?
  • ligaedesliga: camelCase lembra? Somente uma questão de boas práticas.
  • alguns gets/sets são realmente necessários?: como por exemplo, setAno. Um carro depois de criado pode trocar seu ano de fabricação?

Pense nisso.

Caso este post tenha te ajudado, por favor, marcar como solucionado. Bons estudos! =)

Muito obrigado pelas dicas!!