1
resposta

Desafio: hora da prática Classe Carro e Subclasse ModeloCarro

//CLASSE CARRO

package br.alura.modelo;

import java.util.ArrayList; import java.util.Collections; import java.util.List;

public class Carro { protected String modelo; protected String cor; protected int ano; protected List precoMedio = new ArrayList<>();

public String getModelo() {
    return modelo;
}

public void setModelo(String modelo) {
    this.modelo = modelo;
}

public String getCor() {
    return cor;
}

public void setCor(String cor) {
    this.cor = cor;
}

public int getAno() {
    return ano;
}

public void setAno(int ano) {
    this.ano = ano;
}

public void setPrecoMedioAno(double preco) {
        this.precoMedio.add(preco);


}

public double maiorPreco(){
    return Collections.max(this.precoMedio);
}

public double menorPreco(){
    return Collections.min(this.precoMedio);
}

}

//CLASSE MODELOCARRO

package br.alura.modelo;

public class ModeloCarro extends Carro{ }

//MAIN

import br.alura.modelo.ModeloCarro;

public class Main { public static void main(String[] args) {

    ModeloCarro carro = new ModeloCarro();

    carro.setAno(2022);
    carro.setCor("preto");
    carro.setModelo("Argo");

    carro.setPrecoMedioAno(45.000);
    carro.setPrecoMedioAno(47.000);
    carro.setPrecoMedioAno(48.000);

    System.out.printf("R$ %.3f foi o maior valor do periódo.\n",carro.maiorPreco());

    System.out.printf("R$ %.3f foi o menor valor do periódo.\n",carro.menorPreco());
}

}

1 resposta

Olá, Enio.

Tudo bem?

Sua implementação das classes Carro e ModeloCarro estão corretas, porém o exercício também menciona a prática de sobrescrever métodos usando a anotação @Override, além de explorar o conceito de polimorfismo.

No seu código atual, a classe ModeloCarro está herdando de Carro, mas não está adicionando ou modificando nenhum comportamento específico. Para atender ao desafio proposto, você poderia considerar adicionar algum método na classe Carro que você possa sobrescrever na classe ModeloCarro. Por exemplo, você pode adicionar um método na classe Carro que imprime informações do carro, e então sobrescrevê-lo na classe ModeloCarro para incluir detalhes adicionais específicos do modelo.

Aqui está um exemplo de como você poderia fazer isso:

// Na classe Carro
public void imprimirDetalhes() {
    System.out.println("Modelo: " + modelo + ", Cor: " + cor + ", Ano: " + ano);
}

// Na classe ModeloCarro
@Override
public void imprimirDetalhes() {
    super.imprimirDetalhes(); // Chama o método da classe pai
    System.out.println("Detalhes específicos do modelo...");
}

Além disso, você poderia explorar o polimorfismo criando métodos que aceitam objetos do tipo Carro, mas que podem trabalhar com instâncias de ModeloCarro, aproveitando que ModeloCarro é um tipo de Carro. No geral você fez um ótimo trabalho e o seu cpodigo está bem estruturado. Tenta fazer essas sugestões que deixei que vai aprimorar ainda mais o seu conhecimento.

Espero ter ajudado e bons estudos!