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

[Projeto] Desafios resolvidos dos exercicios: 1, 2 e 3

Boa tarde senhores(as),
Um desafio e tanto os numeros primos, segue solução.

package desafio;

import java.util.Arrays;
import java.util.List;

public class Carro {
    private String modelo;
    private double[] precos = new double[3];

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

    public void definirPrecos(double ano1, double ano2, double ano3) {
         precos[0] = ano1;
         precos[1] = ano2;
         precos[2] = ano3;
    }

    public double pegaMaiorPreco(){
         return Arrays.stream(precos).max().getAsDouble();
    }

    public double pegaMenorPreco(){
        return Arrays.stream(precos).min().getAsDouble();
    }

    public void exibeInformacoes(){
        System.out.println("Modelo: " + modelo);
        for (int i = 0; i < precos.length; i++) {
            int ano = i + 1;
            System.out.println("Preço do ano " + ano + ": " + precos[i]);
        }
        System.out.println("Menor preço: " + pegaMenorPreco());
        System.out.println("Maior preço: " + pegaMaiorPreco());
    }
}

package desafio;

public class ModeloCarro extends Carro {
}
package desafio;

public class Animal {
    public void emitirSom(){}
}

package desafio;

public class Cachorro extends Animal{

    @Override
    public void emitirSom() {
        System.out.println("Cachorro latindo...");
    }

    public void abanarRabo(){
        System.out.println("Abanando rabo...");
    }
}

package desafio;

public class Gato extends Animal{

    @Override
    public void emitirSom() {
        System.out.println("Gato miando...");
    }

    public void arranharMoveis(){
        System.out.println("Gato arranhando movéis...");
    }
}
package desafio;

public class ContaBancaria {
    private String titular;
    protected double saldo;

    public String getTitular() {
        return this.titular;
    }

    public void setTitular(String titular) {
        this.titular = titular;
    }

    public double getSaldo() {
        return this.saldo;
    }


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

    public void sacar(double valor) {
        if(this.saldo >= valor) {
            this.saldo -= valor;
            System.out.println("Saque de R$" + valor + " realizado com sucesso, Saldo atual: " + this.saldo);
        } else {
            System.out.println("Saque não permitido, Saldo insuficiente!");
        }
    }

    public void consultarSaldo() {
        System.out.println("Saldo: " + this.getSaldo());
    }

}
package desafio;

public class ContaCorrente extends ContaBancaria {

    public void cobrarTarifaMensal(double tarifa){
        this.saldo -= tarifa;
        System.out.println("Tarifa mensalizada de R$" + tarifa +" realizada com sucesso, Saldo atual: " + this.getSaldo());
    }
}
package desafio;

public class Main {
    public static void main(String[] args) {
        System.out.println("1. Criando Carro a partir do ModeloCarro\n");
        ModeloCarro carro = new ModeloCarro();
        carro.definirModelo("Onix");
        carro.definirPrecos(19950, 25000, 17250.90);
        carro.exibeInformacoes();

        System.out.println("\n2. Criando Animal a partir da classe Cachorro e Gato\n");
        System.out.println("Cachorro:");
        Cachorro cachorro = new Cachorro();
        cachorro.emitirSom();
        cachorro.abanarRabo();

        System.out.println("\nGato:");
        Gato gato = new Gato();
        gato.emitirSom();
        gato.arranharMoveis();

        System.out.println("\n3. Criando Conta Bancaria a partir de Conta Correte\n");
        System.out.println("Conta:");
        ContaCorrente corrente = new ContaCorrente();
        corrente.setTitular("Aldeny Júnior");
        corrente.depositar(1000);
        corrente.sacar(500);
        corrente.cobrarTarifaMensal(29.90);
        corrente.consultarSaldo();
2 respostas

Oii, Aldeny. Tudo bem?

É excelente ver como você elevou o nível do desafio utilizando recursos mais avançados do Java. Sua solução demonstra uma ótima compreensão de Orientação a Objetos e também um bom domínio da biblioteca padrão da linguagem.

  • No exercício do Carro, você optou por utilizar um array de double e a API de Arrays.stream(). Isso deixa o código muito mais limpo e profissional do que fazer diversas verificações com if, pois você utiliza métodos nativos como .max() e .min() para encontrar os valores.
  • Você aplicou corretamente os modificadores de acesso, utilizando private para os atributos e fornecendo métodos get e set na classe ContaBancaria, o que é uma das bases de um código seguro e bem estruturado.
  • O uso do protected no saldo da conta bancária foi uma escolha acertada para permitir que a subclasse ContaCorrente manipule o valor diretamente ao cobrar a tarifa, mantendo o atributo protegido de acessos externos à hierarquia de classes.

Uma pequena sugestão para o exercício 3:

No método cobrarTarifaMensal da classe ContaCorrente, você está subtraindo o valor diretamente do saldo. Como o sistema bancário exige cuidado com o saldo negativo, uma boa prática seria reutilizar a lógica de saque que você já criou.

Você poderia chamar o método sacar(tarifa) dentro de cobrarTarifaMensal. Dessa forma, se a conta não tiver saldo suficiente para a tarifa, o próprio método de saque já faria a verificação que você programou anteriormente, evitando duplicar a lógica de validação.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!
solução!

Oiee Lorena, tudo bem por aqui...
Obrigado pela sugestão, aplicado e corrigido em meu codigo.