1
resposta

Desafio Arrays e Dados 02: Construtores

Descobri pesquisando neste exercício, que é necessário criar o override quando for imprimir um objeto. Achei que funcionaria sem o toString por estar já nativamente nos métodos em todos os casos, mas vi que é apenas nas variáveis primitivas, o toString está ímplicito nelas padrão. Para utilizar objetos é necessário adicionar o toString para visualizar o vetor inteiro.

1. Adicionar produtos, imprimir size e recuperar um produto pelo índice

Fiz a alteração na classe produto no método:

 @Override
    public String toString(){
        return getNome() + ", estoque: " + getQuantidade() + ", preço: " + getPreco();
    }

Ficou assim o main:

       Produto p1 = new Produto("Camisa Santos", 8, 499.99);
        Produto b1 = new Produto("Boné Adidas", 5, 129.99);
        Produto t1 = new Produto("Air Max TN", 12, 999.99);
        Produto c1 = new Produto("Calça Jeans", 9, 69.99);

        ArrayList<Produto> produtos = new ArrayList<>();

        produtos.add(p1);
        produtos.add(b1);
        produtos.add(t1);
        produtos.add(c1);

        System.out.println(produtos.size());
        System.out.println(produtos.get(0));

2. Método e lista completa

@Override
    public String toString(){
        return getNome() + ", estoque: " + getQuantidade() + ", preço: " + getPreco();
    }

Imprimir lista:

    System.out.println(produtos);

3. Construtor e atribuição de valores

Construtor:

public Produto(String nome, Integer quantidade, Double preco) {
        this.nome = nome;
        this.quantidade = quantidade;
        this.preco = preco;
    }

Passagem de valores aos objetos:

   Produto p1 = new Produto("Camisa Santos", 8, 499.99);
        Produto b1 = new Produto("Boné Adidas", 5, 129.99);
        Produto t1 = new Produto("Air Max TN", 12, 999.99);
        Produto c1 = new Produto("Calça Jeans", 9, 69.99);

4. ProdutoPerecivel

Nova classe:

package Arrays.ConstruindoObjetos;

public class ProdutoPerecivel extends Produto {

    private String dataValidade;

    public String getDataValidade() {
        return dataValidade;
    }

    public ProdutoPerecivel(String nome, Integer quantidade, Double preco, String dataValidade) {
        super(nome, quantidade, preco);
        this.dataValidade = dataValidade;
    }
    @Override
    public String toString(){
        return getNome() + ", estoque: " + getQuantidade() + ", preço: " + getPreco() + ", data de validade: " +  getDataValidade();
    }
}

No main:

ProdutoPerecivel vence = new ProdutoPerecivel("Leite", 20, 4.49, "27/04/2025");

produtos.add(vence);

System.out.println("Tamanho do vetor:" + produtos.size());
        System.out.println(produtos);
        System.out.println(produtos.get(4));

Com todos os produtos o console exibiu:

Tamanho do vetor:5
[Camisa Santos, estoque: 8, preço: 499.99, Boné Adidas, estoque: 5, preço: 129.99, Air Max TN, estoque: 12, preço: 999.99, Calça Jeans, estoque: 9, preço: 69.99, Leite, estoque: 20, preço: 4.49, data de validade: 27/04/2025]
Leite, estoque: 20, preço: 4.49, data de validade: 27/04/2025
1 resposta

Oi, Paulo! Como vai?

Parabéns pelas resoluções dos desafios, ficaram ótimas!

Seu cuidado em sobrescrever o método toString foi ótimo, principalmente para tornar a visualização dos objetos no console muito mais clara. Do jeito que você explicou, ficou evidente como o toString faz a diferença na impressão dos elementos.

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