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

[Projeto] Desafio resolvido

package desafio.listas;

public class Animal {
}
package desafio.listas;

public class Cachorro extends Animal{
}
package desafio.listas;

public class Produto {
    private String nome;
    private double preco;

    public Produto(String nome, double preco) {
        this.nome = nome;
        this.preco = preco;
    }

    public String getNome() {
        return nome;
    }

    public double getPreco() {
        return preco;
    }
}
package desafio.listas;

public interface Forma {
    double calcularArea();
}
package desafio.listas;

public class Circulo implements Forma{
    double raio;

    public Circulo(double raio) {
        this.raio = raio;
    }

    public double getRaio() {
        return raio;
    }

    @Override
    public double calcularArea() {
        return Math.PI * raio * raio;
    }
}
package desafio.listas;

public class Quadrado implements Forma {
    double lado;

    public Quadrado(double lado) {
        this.lado = lado;
    }

    public double getLado() {
        return lado;
    }

    @Override
    public double calcularArea() {
        return  lado * lado;
    }
}
package desafio.listas;

public class ContaBancaria {
    int numero;
    double saldo;

    public ContaBancaria(int numero, double saldo) {
        this.numero = numero;
        this.saldo = saldo;
    }

    public int getNumero() {
        return numero;
    }

    public double getSaldo() {
        return saldo;
    }
}
package desafio.listas;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Main {
    public static void main(String[] args) {
        ArrayList<String> strings = new ArrayList<String>(List.of("a", "b", "c"));
        System.out.println("Imprimindo lista de Strings: ");
        strings.forEach(System.out::println);

//        Cachorro cachorro = new Cachorro();
//        Animal animal = (Animal) cachorro;

        Animal animal = new Cachorro();
        if (animal instanceof Cachorro) {
            Cachorro cachorro = (Cachorro) animal;
        }

        Produto p1 = new Produto("Iphone 15", 2999.59);
        Produto p2 = new Produto("Iphone 16", 3999.59);
        Produto p3 = new Produto("Iphone 17", 7999.59);
        ArrayList<Produto> produtos = new ArrayList<Produto>(List.of(p1, p2, p3));

        double mdiaDosProdutos = produtos
                .stream()
                .mapToDouble(Produto::getPreco)
                .average()
                .orElse(0.0);

        System.out.println("Media dos preços dos produtos: " + mdiaDosProdutos);

        Circulo circulo = new Circulo(4);
        Quadrado quadrado = new Quadrado(5);

        ArrayList<Forma> formas = new ArrayList<>(List.of(circulo, quadrado));
        formas.stream().forEach(forma -> System.out.println("Araa: " + forma.calcularArea()));


        ArrayList<ContaBancaria> listaDeContas = new ArrayList<>();
        for (int i = 0; i < 10 ; i++) {
            int numero = new Random().nextInt(1001, 9000);
            double saldo = new Random().nextDouble(2000, 19000);
            ContaBancaria conta = new ContaBancaria(numero, saldo);
            System.out.println("Conta " + i + ": " + " R$"+conta.getSaldo());
            listaDeContas.add(conta);
        }

        ContaBancaria contaBancaria = listaDeContas.stream().max((o1, o2) -> Double.compare(o1.getSaldo(), o2.getSaldo())).get();
        System.out.println("A conta bancaria com o maior saldo é R$: " + contaBancaria.getSaldo());
    }
}

Resultado Esperado:

Imprimindo lista de Strings: 
a
b
c
Media dos preços dos produtos: 4999.59
Araa: 50.26548245743669
Araa: 25.0
Conta 0:  R$6507.883689382048
Conta 1:  R$14853.435261820498
Conta 2:  R$11385.75847370961
Conta 3:  R$12309.683286555522
Conta 4:  R$18437.528730951224
Conta 5:  R$6550.139621736788
Conta 6:  R$3650.8077653384717
Conta 7:  R$14430.921669514057
Conta 8:  R$7904.7634097053915
Conta 9:  R$8474.512631125108
A conta bancaria com o maior saldo é R$: 18437.528730951224

Observação: O Saldo maior da conta pode variar de acordo com a execução devido a geração dinamica.

3 respostas

Boa tarde pessoal
Ainda aguardando avaliação, está sendo bastante importante a analises dos senhores(as).

Obrigado!

Olá, Aldeny! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de listas e coleções para organizar dados em Java, utilizou muito bem ArrayList e stream para manipular elementos de forma eficiente e ainda compreendeu a importância do polimorfismo ao aplicar a interface Forma em diferentes classes como Circulo e Quadrado.

Uma dica interessante para o futuro é aplicar Comparator diretamente em streams para deixar o código mais expressivo ao buscar o maior saldo. Assim:

ContaBancaria contaBancaria = listaDeContas
        .stream()
        .max(Comparator.comparingDouble(ContaBancaria::getSaldo))
        .orElse(null);

if (contaBancaria != null) {
    System.out.println("A conta bancária com o maior saldo é R$: " + contaBancaria.getSaldo());
}

Isso faz com que o código fique mais legível e siga boas práticas de programação funcional em Java.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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

Bom dia Daniel, obrigado pela analise e apontamentos, todos corrigidos!