1
resposta

Desafio: hora da prática - ArrayLists, casting de objeto e instanceof (Parte 1)

Crie um ArrayList de strings e utilize um loop foreach para percorrer e imprimir cada elemento da lista.

package br.com.listas.principal;

import java.util.ArrayList;

public class Principal {
    public static void main(String[] args) {
        ArrayList<String> livros = new ArrayList<>();
        livros.add("Corte de Névoa e Furia");
        livros.add("O Morro dos Ventos Uivantes");
        livros.add("A Biblioteca dos Sonhos Secretos");

        for (String item : livros) {
            System.out.println(item);
        }
    }
}

Crie uma classe Animal e uma classe Cachorro que herda de Animal. Em seguida, crie um objeto da classe Cachorro e faça o casting para a classe Animal.

package br.com.exercicio.principal;

import br.com.exercicio.modelo.Animal;
import br.com.exercicio.modelo.Cachorro;

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

        Cachorro cachorro = new Cachorro("Thor", 5, "Labrador");
        Animal animal = (Animal) cachorro;
    }
}

Modifique o Exercício 2 para incluir uma verificação usando instanceof para garantir que o objeto seja do tipo correto antes de fazer o casting.

package br.com.exercicio.principal;

import br.com.exercicio.modelo.Animal;
import br.com.exercicio.modelo.Cachorro;

public class Principal {
    public static void main(String[] args) {
        
        Animal animal = new Cachorro("Thor", 5, "Labrador");
        if (animal instanceof Cachorro) {
            Cachorro cachorro = (Cachorro) animal;
        } else {
            System.out.println("Não é um cachorro.");
        }
    }
}

Crie uma classe Produto com propriedades como nome e preço. Em seguida, crie uma lista de produtos e utilize um loop para calcular e imprimir o preço médio dos produtos.

package br.com.exercicio.modelo;

import java.text.DecimalFormat;

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;
    }

    @Override
    public String toString() {
        DecimalFormat df = new DecimalFormat("####.00");
        String precoFormatado = df.format(this.getPreco());
        return "Produto: " + nome + "(Preço: R$" + precoFormatado + ")";
    }
}
package br.com.exercicio.principal;

import br.com.exercicio.modelo.Produto;

import java.util.ArrayList;

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

        Produto produto1 = new Produto("Celular", 1500.00);
        Produto produto2 = new Produto("Notebook", 2500.00);

        ArrayList<Produto> listaProdutos = new ArrayList<>();
        listaProdutos.add(produto1);
        listaProdutos.add(produto2);

        double somaPrecos = 0;
        for (Produto produto : listaProdutos) {
            somaPrecos += produto.getPreco();
        }

        listaProdutos.forEach(System.out::println);

        double mediaPrecos = somaPrecos / listaProdutos.size();
        System.out.println(String.format("Preço Médio: R$%.2f", mediaPrecos));

    }
}

Crie uma interface Forma com um método calcularArea(). Implemente a interface em duas classes, por exemplo, Circulo e Quadrado. Em seguida, crie uma lista de formas (objetos da interface Forma) e utilize um loop para calcular e imprimir a área de cada forma.

package br.com.exercicioarea.modelo;

public interface Forma {
    double calcularArea();
}
package br.com.exercicioarea.modelo;

public class Circulo implements Forma {
    private double raio;

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

    @Override
    public double calcularArea() {
        return Math.PI * raio * raio;
    }
}
package br.com.exercicioarea.modelo;

public class Quadrado implements Forma {
    private double lado;

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

    @Override
    public double calcularArea() {
        return lado * lado;
    }
}
package br.com.exercicioarea.principal;

import br.com.exercicioarea.modelo.Circulo;
import br.com.exercicioarea.modelo.Forma;
import br.com.exercicioarea.modelo.Quadrado;

import java.util.ArrayList;

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

        Circulo circulo = new Circulo(2.5);
        Quadrado quadrado = new Quadrado(4.0);

        ArrayList<Forma> formas = new ArrayList<>();
        formas.add(circulo);
        formas.add(quadrado);

        for (Forma item : formas) {
            System.out.println("Area: " + item.calcularArea());
        }
    }
}

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta

Oi, Aline! Como vai?

Agradeço por compartilhar.

Gostei muito das suas soluções! Você aplicou corretamente o uso de ArrayList, casting e instanceof, além de demonstrar boa organização nas classes e pacotes. Ficou claro que você entendeu bem os conceitos de herança e interfaces ao implementar as formas geométricas.

Continue praticando e explorando a criação de listas com diferentes tipos de objetos.

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