1
resposta

Desafio: hora da prática - PARTE 2

Classe Main:

import java.util.ArrayList;

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

        System.out.println("Exercício 1: ");
        ArrayList<String> nomes = new ArrayList<>();
        nomes.add("Vivian");
        nomes.add("Viviane");
        nomes.add("Vivânia");

        for(String nome : nomes){
            System.out.println(nome);
        }

        System.out.println("\nExercicio 2: ");
        Cachorro doguinho = new Cachorro("Doguinho", true);
        Cachorro toto = new Cachorro("Toto", true);
        Cachorro coiote = new Cachorro("Coiote", false);
        Animal estranhoNoGalinheiro = (Animal) coiote;

        ArrayList<Animal> animalList = new ArrayList<>();
        animalList.add(toto);
        animalList.add(doguinho);
        animalList.add(estranhoNoGalinheiro);
        for (Animal animal: animalList) {
            System.out.println(animal);
        }

        System.out.println("\nExercicio 3: ");


        for (Animal animal: animalList) {
            System.out.println(animal.getNome());
            if (animal instanceof Cachorro cao && cao.isBabao()){
                System.out.println("É cachorro!");
            } else{
                System.out.println("Cuidado! Coiote no galinheiro!!!");
            }
        }

        System.out.println("\nExercicio 4: ");
        ArrayList<Produto> produtos = new ArrayList<>();
        Produto smartv = new Produto("LG Tv", 1999.00, 200);
        produtos.add(smartv);
        Produto balinha = new Produto("Balinha", 0.99, 500);
        produtos.add(balinha);
        Produto ferradura = new Produto("Ferradura", 9.99, 400);
        produtos.add(ferradura);

        double somaPrecos = 0;
        int somaQuantidade = 0;
        for (Produto produto: produtos) {
            double totalProduto = produto.getQuantidade() * produto.getPreco();
            int totalQuantidade = produto.getQuantidade();
            somaPrecos += totalProduto;
            somaQuantidade += totalQuantidade;
        }
        System.out.println("Mádia de preços total: " + somaPrecos / somaQuantidade);

        System.out.println("\nExercício 5: ");

        ArrayList<Forma> formas = new ArrayList<>();
        Circulo circulo1 = new Circulo(5.0);
        formas.add(circulo1);
        Circulo circulo2 = new Circulo(8.0);
        formas.add(circulo2);
        Circulo circulo3 = new Circulo(9.0);
        formas.add(circulo3);
        Quadrado quadrado1 = new Quadrado(5.0);
        formas.add(quadrado1);
        Quadrado quadrado2 = new Quadrado(8.0);
        formas.add(quadrado2);
        Quadrado quadrado3 = new Quadrado(9.0);
        formas.add(quadrado3);

        for (Forma forma: formas) {
            System.out.println("Área do " + forma.getClass().getSimpleName() + ": " + forma.calcularArea());
        }

        System.out.println("\nExercicio 6: ");
        ContaBancaria conta1 = new ContaBancaria(123, 100);
        ContaBancaria conta2 = new ContaBancaria(145, 200);
        ContaBancaria conta3 = new ContaBancaria(182, 201);
        ContaBancaria conta4 = new ContaBancaria(230, 300);
        ArrayList<ContaBancaria> contas = new ArrayList<>();
        contas.add(conta1);
        contas.add(conta2);
        contas.add(conta3);
        contas.add(conta4);

        ContaBancaria maiorSaldo = conta1;
        for (ContaBancaria conta: contas) {
            if (conta.getSaldo() > maiorSaldo.getSaldo()) {
                maiorSaldo = conta;
            }
        }
        System.out.println("Conta de maior saldo da lista: " + maiorSaldo);
    }
}

Output:

Exercício 1: 
Vivian
Viviane
Vivânia
Vivinha
VinhaVinha

Exercicio 2: 
Cachorro{nome: Doguin, babao: true}
Cachorro{nome: Toto, babao: true}
Cachorro{nome: Doguin, babao: true}
Cachorro{nome: Coiote, babao: false}

Exercicio 3: 
Doguin
É cachorro!
Toto
É cachorro!
Doguin
É cachorro!
Coiote
Cuidado! Coiote no galinheiro!!!

Exercicio 4: 
Mádia de preços total: 367.53727272727275

Exercício 5: 
Área do Circulo: 78.53981633974483
Área do Circulo: 201.06192982974676
Área do Circulo: 254.46900494077323
Área do Quadrado: 25.0
Área do Quadrado: 64.0
Área do Quadrado: 81.0

Exercicio 6: 
Conta de maior saldo da lista: ContaBancaria{numero=230, saldo=300.0}

Process finished with exit code 0
1 resposta

Oii, Raoni!

Excelente continuação! Agora com a classe Main, dá pra ver todo o ciclo funcionando: a criação dos objetos, a manipulação das listas e o uso do polimorfismo.

O seu código tá muito bem escrito e você utilizou alguns recursos bem interessantes do Java. Separei alguns destaques sobre a sua resolução:

1. Java Moderno (Pattern matching for instanceof)
No Exercício 3, você usou uma sintaxe muito atual e limpa:

if (animal instanceof Cachorro cao && cao.isBabao()){
    // ...
}

Isso se chama Pattern Matching for instanceof (disponível nas versões mais recentes do Java). Antigamente, precisávamos fazer o if, e dentro dele fazer o casting manual (Cachorro cao = (Cachorro) animal;). Do jeito que você fez, o Java já converte automaticamente a variável animal para cao dentro do escopo do if. Parabéns por já aplicar isso!

2. Introspecção de classes
No Exercício 5, achei muito legal o uso de:

forma.getClass().getSimpleName()

Isso deixou o seu System.out.println dinâmico. Em vez de escrever "Área da forma:", o programa diz exatamente se é um Quadrado ou Círculo sem que você precise fazer if/else. É um ótimo uso de reflexão para logging ou exibição.

3. Lógica de negócio (Média ponderada)
No Exercício 4, notei que você foi além do enunciado simples. Ao calcular a média, você fez uma média ponderada (considerando a quantidade em estoque), o que é muito mais realista para um sistema de inventário do que apenas somar os preços unitários e dividir pela quantidade de tipos de produtos.

Você domina bem os conceitos de Herança, Polimorfismo e manipulação de Listas.

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