Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Resolução desafio

No começo, eu não via vantagem em mudar as propriedades do toString. Depois, quando fui tentar imprimir os dados de ProdutoPerecível, o toString foi uma forma muito ágil de resolver o problema! Muito legal ver o conhecimento se consolidando.

package br.com.alura.screenmatch.calculos.desafios.desafio2;

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

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

    @Override
    public String toString() {
        return "Produto{" +
                "nome='" + nome + '\'' +
                ", preco=" + preco +
                ", quantidade=" + quantidade +
                '}';
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public double getPreco() {
        return preco;
    }

    public void setPreco(double preco) {
        this.preco = preco;
    }

    public int getQuantidade() {
        return quantidade;
    }

    public void setQuantidade(int quantidade) {
        this.quantidade = quantidade;
    }
}
package br.com.alura.screenmatch.calculos.desafios.desafio2;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Date;

public class ProdutoPerecivel extends Produto {

    LocalDate dataValidade;
            //LocalDate.of(2028,10,22);

    DateTimeFormatter formato = DateTimeFormatter.ofPattern("dd/MM/yyyy");

    public ProdutoPerecivel(String nome, double preco, int quantidade, LocalDate dataValidade) {
        super(nome, preco, quantidade);
        this.dataValidade = dataValidade;
    }

    public LocalDate getDataValidade() {
        return dataValidade;
    }

    @Override
    public String toString() {
        return super.toString() + "Validade: " + dataValidade.format(formato);
    }
}
package br.com.alura.screenmatch.calculos.desafios.desafio2;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList<Produto> listaProdutos = new ArrayList<>();
        Produto produto1 = new Produto("Calça Jeans P",119.9,75);
        Produto produto2 = new Produto("Iphone 16",8999.99,8);
        Produto produto3 = new Produto("Life of P",38.5,40);

        listaProdutos.add(produto1);
        listaProdutos.add(produto2);
        listaProdutos.add(produto3);

        System.out.println("Itens na lista: " + listaProdutos.size());
        System.out.println("Primeiro produto: " + listaProdutos.getFirst());

        System.out.println("Lista: " + listaProdutos);

        Produto produto4 = new ProdutoPerecivel(
                "Feijão Caldo Bom 5kg",
                25.99,
                250,
                LocalDate.of(2025,2,22));


        listaProdutos.add(produto4);

        System.out.println(produto4);






    }
}
1 resposta
solução!

E aí, Diogo! Tudo bem?

Parabéns! Mantenha o ritmo nos exercícios e continue compartilhando na nossa comunidade.

Percebi que você praticou o uso de herança entre classes para especializar comportamentos, aplicou muito bem o uso de ArrayList para manipular objetos de forma dinâmica e ainda entendeu a relevância de LocalDate e DateTimeFormatter para lidar com datas de maneira segura e legível.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

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!