1
resposta

[Sugestão] Desafio: ArrayList, casting e instanceof Resolvido

public class Main {
    public static void main(String[] args) {
        ArrayList<String> lista = new ArrayList<>();

        lista.add("Ford");
        lista.add("General Motors");
        lista.add("Volkswagen");
        
        lista.forEach(item -> System.out.println(item));

        Cachorro cachorro = new Cachorro(4, 4, 24, "Fred", "João");
        Animal animal = (Animal) cachorro;
    
        System.out.println(animal);
        
        Animal animal1 = new Cachorro(4, 4, 24, "Romeu", "Carlos");
        if(animal1 instanceof Cachorro cachorro1){
            //Usando setter só pra testar a mudança de nome
            cachorro1.setNome("Romeu Juca");
            System.out.println(cachorro1);
        }else{
            System.out.println("Este animal não é um cachorro");
        }
        
        ArrayList<Produto> produtos = new ArrayList<>();
        produtos.add(new Produto("Caderno", 21.9));
        produtos.add(new Produto("Lapis", 1.5));
        produtos.add(new Produto("Borracha", 3.0));
        produtos.add(new Produto("Mochila", 59.99));

        double soma  = 0;

        for(Produto produto : produtos){
            soma+= produto.getPreco();
        }
        System.out.println("Preço médio de %d produtos: %f".formatted(produtos.size(), (soma/produtos.size())));

        ArrayList<Forma> formas = new ArrayList<>();
        formas.add(new Circulo(6));
        formas.add(new Circulo(2.3));
        formas.add(new Circulo(9));
        formas.add(new Quadrado(6));
        formas.add(new Quadrado(16.5));
        formas.add(new Quadrado(9));

        for (Forma forma : formas) {
            if(forma instanceof Quadrado quadrado){
                System.out.println("Essa forma é um quadrado e usa área é: %.2fcm2".formatted(quadrado.calcularArea()));
            }else if (forma instanceof Circulo circulo){
                System.out.println("Essa forma é um círculo e usa área é: %.2fcm2".formatted(circulo.calcularArea()));
            }
        }

        ArrayList<ContaBancaria> contas = new ArrayList<>();
        contas.add(new ContaBancaria(1111112, 2500.68));
        contas.add(new ContaBancaria(3411116, 25000));
        contas.add(new ContaBancaria(1211817, 5090.90));
        contas.add(new ContaBancaria(8156112, 12500.68));
        contas.add(new ContaBancaria(7189132, 250));
        contas.add(new ContaBancaria(9113681, 25.6));

        ContaBancaria maiorSaldoConta = contas.get(0);

        for (ContaBancaria contaBancaria : contas) {
            if(contaBancaria.getSaldo() > maiorSaldoConta.getSaldo()) maiorSaldoConta = contaBancaria;
        }
        System.out.println("A conta com maior saldo é: %d".formatted(maiorSaldoConta.getNumeroConta()));
    }
}
public class Animal {
    private int patas;
    private int idade;
    private int peso;

    public Animal(int patas, int idade, int peso) {
        this.patas = patas;
        this.idade = idade;
        this.peso = peso;
    }

    public void emitirSom(){
        System.out.println("Emitindo som");
    }
    
    public void dormir(){
        System.out.println("Dormindo");
    }
}
public class Cachorro extends Animal{
    private String nome;
    private String dono;

    public Cachorro(int patas, int idade, int peso, String nome, String dono) {
        super(patas, idade, peso);
        this.nome = nome;
        this.dono = dono;
    }
    
    public void setNome(String nome) {
        this.nome = nome;
    }

    @Override
    public String toString() {
        return "Nome do cachorro: %s | Nome do dono: %s".formatted(nome, dono);
    }

    @Override
    public void emitirSom() {
        System.out.println("Latindo");
    }
}
public class Circulo implements Forma{
    private double raio;

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

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

ContaBancaria.java:

public class ContaBancaria {
    private int numeroConta;
    private double saldo;

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

    public int getNumeroConta() {
        return numeroConta;
    }
    public double getSaldo() {
        return saldo;
    }
}
public class Produto {
    private String nome;
    private double preco;

    public Produto(String nome, double preco) {
        this.nome = nome;
        this.preco = preco;
    }
    
    public double getPreco() {
        return preco;
    }
}
public class Quadrado implements Forma{
    private double lado;

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

    @Override
    public double calcularArea(){
        return lado * lado;
    }
}
1 resposta

Oi! Como você está?

Meus parabéns pela excelente resolução do desafio! É muito gratificante acompanhar o seu desenvolvimento e ver como você aplicou conceitos fundamentais de Java, como o uso de ArrayList, casting e a verificação com instanceof.

Conte sempre com a Alura para evoluir seus estudos.

Bons estudos!

Sucesso

Imagem da comunidade