1
resposta

Desafio: hora da prática [08]

Segue a resolução do exercício.
Classe Produto:

public class Produto {
    private String nome;
    private double preco;
    private int 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;
    }

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

Classe ProdutoPerecivel:

import java.time.LocalDate;


public class ProdutoPerecivel extends Produto{

    private LocalDate
            dataDevalidade;

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

    public LocalDate getDataDevalidade() {
        return dataDevalidade;
    }

    public void setDataDevalidade(LocalDate dataDevalidade) {
        this.dataDevalidade = dataDevalidade;
    }

    @Override
    public String toString() {
        return "ProdutoPerecivel{" +
                "nome: " + this.getNome() +
                ", preco: " + this.getPreco() +
                ", quantidade: " + this.getQuantidade() +
                ", data de validade: " + dataDevalidade +
                '}';
    }
}

Classe Main:

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

public class Main {
    public static void main(String[] args) {
        ArrayList<Produto>  produtos = new ArrayList<>(3);
        Produto p1 = new Produto("Colgate", 1.92, 100);
        Produto p2 = new Produto("Escova de Dente", 7.75, 67);
        Produto p3 = new Produto("Listerine", 19.90, 200);
        produtos.add(p1);
        produtos.add(p2);
        produtos.add(p3);

        System.out.println("Tamanho da lista: " + produtos.size());
        System.out.println("Impressão dos produtos da lista (toString()): ");
        for (int i = 0; i<produtos.size();i++) {
            System.out.println(produtos.get(i));
        }

        ProdutoPerecivel perecivel = new ProdutoPerecivel("Tomate",3.20,200, LocalDate.of(2025, 1, 10));
        System.out.println("Produto perecível toString(): " + perecivel);

    }
}

Output:

Tamanho da lista: 3
Impressão dos produtos da lista (toString()): 
Produto{nome: Colgate, preco: 1.92, quantidade: 100}
Produto{nome: Escova de Dente, preco: 7.75, quantidade: 67}
Produto{nome: Listerine, preco: 19.9, quantidade: 200}
Produto perecível toString(): ProdutoPerecivel{nome: Tomate, preco: 3.2, quantidade: 200, data de validade: 2025-01-10}

Process finished with exit code 0
1 resposta

Oii, Raoni, tudo bem?

Parabéns pela resolução do desafio! Fico feliz em ver seu progresso.

O seu código tá muito bem estruturado. Você aplicou corretamente os conceitos de herança com a palavra-chave extends e o uso do super no construtor da classe filha. Outro ponto muito positivo foi a escolha da classe LocalDate para manipular a data de validade. Isso demonstra que você já está buscando formas mais adequadas de lidar com tipos de dados, em vez de usar apenas String.

A sobrescrita do método toString também ficou ótima e permitiu uma visualização clara dos objetos no console.

Continue firme nos estudos.

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