Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Projeto] Resolucao

public class Carro1 {
private String modelo;
private Double ano1;
private Double ano2;
private Double ano3;

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

public void definirValor(Double ano1, Double ano2, Double ano3) {
    this.ano1 = ano1;
    this.ano2 = ano2;
    this.ano3 = ano3;
}

public void exibirInfo() {
    System.out.println("Modelo: " + modelo);
    System.out.println("Preço Ano 1: " + ano1);
    System.out.println("Preço Ano 2: " + ano2);
    System.out.println("Preço Ano 3: " + ano3);
    System.out.println("Menor Preço: " + calcularMenorPreco());
    System.out.println("Maior Preço: " + calcularMaiorPreco());
}

private double calcularMenorPreco() {
    double menorPreco = ano1;

    if (ano2 > ano3) {
        menorPreco= ano2;
    }
    if (ano3 < menorPreco) {
        menorPreco = ano3;
    }
    return menorPreco;
}

private double calcularMaiorPreco() {
    double maiorPreco = ano1;

    if (ano2 > ano3) {
        maiorPreco = ano2;
    }

    if (ano3 < maiorPreco) {
        maiorPreco = ano3;
    }

    return maiorPreco;
}

}

class ModeloCarro extends Carro1 {
}

class TesteCarro {
public static void main(String [] args) {
ModeloCarro meuCarro = new ModeloCarro();
meuCarro.definirModelo("Lancer");
meuCarro.definirValor(30000.0,54000.0,28500.0);
meuCarro.exibirInfo();
}
}

public class Animal {
public void emitirSom() {
System.out.println("Som");
}
}

class Cachorro extends Animal {
@Override
public void emitirSom() {
System.out.println("Au Au");
}

public void abanarRabo() {
    System.out.println("Cachorro abanando o rabo");
}

}

class Gato extends Animal {
@Override
public void emitirSom() {
System.out.println("Miau");
}

public void arranharMoveis() {
    System.out.println("Gato arranhando móveis");
}

}

class TesteAnimais {
public static void main(String[] args) {
Cachorro cachorro = new Cachorro();
cachorro.emitirSom();
cachorro.abanarRabo();

    Gato gato = new Gato();
    gato.emitirSom();
    gato.arranharMoveis();
}

}

public class ContaBancaria01 {
public static class ContaBancaria {
protected double saldo;

    public void depositar(double valor) {
        saldo += valor;
        System.out.println("Depósito de " + valor + " realizado. Saldo atual: " + saldo);
    }

    public void sacar(double valor) {
        if (valor <= saldo) {
            saldo -= valor;
            System.out.println("Saque de " + valor + " realizado. Saldo atual: " + saldo);
        } else {
            System.out.println("Saldo insuficiente.");
        }
    }

    public void consultarSaldo() {
        System.out.println("Seu saldo atual: " + saldo);
    }
}

public static class ContaCorrente extends ContaBancaria {
    private double tarifaMensal;

    public void cobrarTarifaMensal() {
        saldo -= tarifaMensal;
        System.out.println("Tarifa mensal de " + tarifaMensal + " cobrada. Saldo atual: " + saldo);
    }
}

//Classe Teste
public class TesteContaBancaria {
    public static void main(String[] args) {
        ContaBancaria conta = new ContaBancaria();
        conta.depositar(5000);
        conta.consultarSaldo();

        // Realizando operações na conta corrente
        ContaCorrente contaCorrente = new ContaCorrente();
        contaCorrente.depositar(200);
        contaCorrente.cobrarTarifaMensal();
        contaCorrente.consultarSaldo();
        contaCorrente.sacar(150);
        contaCorrente.consultarSaldo();
    }
}
1 resposta

Oii Matheus, tudo bem?

Obrigada por compartilhar suas soluções aqui no fórum, com certeza vai ajudar outros alunos que estejam trabalhando nos mesmos exercícios.

Você cobriu bem os três conceitos: herança, polimorfismo e encapsulamento. A estrutura geral está correta e o código compila e funciona. Tenho apenas uma observação sobre a lógica de calcularMenorPreco() e calcularMaiorPreco(), porque os dois métodos estão retornando o mesmo resultado.

Veja o que acontece em calcularMaiorPreco():

double maiorPreco = ano1;

if (ano2 > ano3) {
    maiorPreco = ano2;  // atribui ano2 se ano2 > ano3
}

if (ano3 < maiorPreco) {
    maiorPreco = ano3;  // depois, pode sobrescrever com ano3 se for menor!
}

O segundo if usa <, então ele pode acabar diminuindo o valor que você acabou de atribuir. Para o maior preço, a comparação deveria ser >. O mesmo raciocínio vale para o menor: revise as condições para garantir que cada método realmente encontre o que o nome promete.

Com os valores 30000.0, 54000.0 e 28500.0, o menor esperado é 28500 e o maior é 54000. Vale testar e ver o que cada método retorna agora, isso já vai deixar o bug mais evidente.

Conte com a Alura para evoluir seus estudos. Em caso de dúvidas, fico à disposição.

Bons estudos!

Sucesso

Imagem da comunidade