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

Compreensão sobre construtores

  1. Classe Produto com atributos, construtor, ArrayList e recuperação por índice Classe Produto.java:

Java

public class Produto {

**private String nome;
private double preco;
private int quantidade;

// Construtor padrão (sem argumentos)
public Produto() {
    // Pode ser útil para instanciar objetos vazios e setar valores posteriormente
}

// Construtor com parâmetros para inicializar os atributos
public Produto(String nome, double preco, int quantidade) {
    this.nome = nome;
    this.preco = preco;
    this.quantidade = quantidade;
}

// Métodos Getters
public String getNome() {
    return nome;
}

public double getPreco() {
    return preco;
}

public int getQuantidade() {
    return quantidade;
}

// Métodos Setters (se necessário para modificação externa)
public void setNome(String nome) {
    this.nome = nome;
}

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

public void setQuantidade(int quantidade) {
    this.quantidade = quantidade;
}

// Implementação do método toString()
@Override
public String toString() {
    return "Produto [Nome: " + nome + ", Preço: R$" + String.format("%.2f", preco) + ", Quantidade: " + quantidade + "]";
}
}
**```
Classe principal (Exemplo de uso):

Java

import java.util.ArrayList;
import java.util.List;

public class PrincipalProdutos {

public static void main(String[] args) { // Criando uma lista de objetos Produto List listaProdutos = new ArrayList<>();

// Adicionando alguns produtos utilizando o construtor com parâmetros
listaProdutos.add(new Produto("Notebook Dell", 4500.00, 5));
listaProdutos.add(new Produto("Mouse Logitech", 120.00, 50));
listaProdutos.add(new Produto("Teclado Mecânico", 350.00, 20));
listaProdutos.add(new Produto("Monitor LG 27'", 1200.00, 10));

// Imprimindo o tamanho da lista
System.out.println("Tamanho da lista de produtos: " + listaProdutos.size());

// Recuperando um produto pelo índice (ex: o segundo produto, índice 1)
if (listaProdutos.size() > 1) {
    Produto segundoProduto = listaProdutos.get(1);
    System.out.println("\nProduto recuperado pelo índice 1: " + segundoProduto.getNome() +
                       " (Preço: R$" + String.format("%.2f", segundoProduto.getPreco()) + ")");
}

System.out.println("\n--- Lista de Produtos (usando toString()) ---");
// Imprimindo a lista de produtos (o método toString() será chamado automaticamente)
System.out.println(listaProdutos);

} }

2. Classe ProdutoPerecivel (Herança e Construtor super)
Classe ProdutoPerecivel.java:

Java

import java.time.LocalDate; // Importa a classe LocalDate para trabalhar com datas

public class ProdutoPerecivel extends Produto {

private LocalDate dataValidade; // Atributo para a data de validade

// Construtor da classe ProdutoPerecivel public ProdutoPerecivel(String nome, double preco, int quantidade, LocalDate dataValidade) { // Chama o construtor da classe pai (Produto) para inicializar os atributos herdados super(nome, preco, quantidade); this.dataValidade = dataValidade; }

// Getter para a data de validade public LocalDate getDataValidade() { return dataValidade; }

// Setter para a data de validade (se necessário) public void setDataValidade(LocalDate dataValidade) { this.dataValidade = dataValidade; }

// Sobrescreve o método toString() para incluir a data de validade @Override public String toString() { return "Produto Perecível [Nome: " + getNome() + ", Preço: R$" + String.format("%.2f", getPreco()) + ", Quantidade: " + getQuantidade() + ", Validade: " + dataValidade + "]"; } }

Classe principal (Exemplo de uso para ProdutoPerecivel):

Java

import java.time.LocalDate;

public class PrincipalProdutosPereciveis {

public static void main(String[] args) { // Criando um objeto ProdutoPerecivel ProdutoPerecivel leite = new ProdutoPerecivel("Leite Integral", 5.50, 12, LocalDate.of(2025, 6, 15)); ProdutoPerecivel iogurte = new ProdutoPerecivel("Iogurte Natural", 3.20, 20, LocalDate.of(2025, 6, 10));

// Imprimindo os valores do objeto ProdutoPerecivel
System.out.println("\n--- Produtos Perecíveis ---");
System.out.println(leite);

System.out.println(iogurte); } }


Como executar o código:

javac Produto.java PrincipalProdutos.java ProdutoPerecivel.java PrincipalProdutosPereciveis.java
Execute as classes principais para ver a saída:
Bash

java PrincipalProdutos
java PrincipalProdutosPereciveis
1 resposta
solução!

Oii, Daiane!

Sua explicação sobre construtores tá muito clara. A distinção entre o construtor padrão e o com parâmetros na classe Produto foi bem colocada, e o uso do super() na classe ProdutoPerecivel evidencia com clareza o conceito de herança e reaproveitamento de código. É ótimo também que você demonstrou o uso da lista com recuperação por índice e sobrescreveu o método toString() para tornar a saída mais legível.

Uma dica seria experimentar ordenar os produtos com base no preço ou nome, implementando a interface Comparable ou usando Comparator. Isso reforça o entendimento de listas e dá mais flexibilidade à manipulação de dados.

Você está indo super bem nos fundamentos da orientação a objetos!

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