// Classe base Produto
class Produto {
private String nome;
private double preco;
private int quantidade;
// Construtor padrão
public Produto() {
}
// Construtor com parâmetros (modificação solicitada)
public Produto(String nome, double preco, int quantidade) {
this.nome = nome;
this.preco = preco;
this.quantidade = quantidade;
}
// Métodos getters e setters
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;
}
// Implementação do toString() (requisito)
@Override
public String toString() {
return "Produto{" +
"nome='" + nome + '\'' +
", preco=" + preco +
", quantidade=" + quantidade +
'}';
}
}
// Classe ProdutoPerecivel que herda de Produto
class ProdutoPerecivel extends Produto {
private Date dataValidade;
// Construtor utilizando super() (requisito)
public ProdutoPerecivel(String nome, double preco, int quantidade, Date dataValidade) {
super(nome, preco, quantidade);
this.dataValidade = dataValidade;
}
// Getter e setter para dataValidade
public Date getDataValidade() {
return dataValidade;
}
public void setDataValidade(Date dataValidade) {
this.dataValidade = dataValidade;
}
// Sobrescrita do toString() para incluir dataValidade
@Override
public String toString() {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
return "ProdutoPerecivel{" +
"nome='" + getNome() + '\'' +
", preco=" + getPreco() +
", quantidade=" + getQuantidade() +
", dataValidade=" + sdf.format(dataValidade) +
'}';
}
}
public class Main {
public static void main(String[] args) {
// Criando ArrayList de Produtos
ArrayList<Produto> listaProdutos = new ArrayList<>();
// Adicionando produtos usando o construtor com parâmetros
listaProdutos.add(new Produto("Arroz", 5.99, 50));
listaProdutos.add(new Produto("Feijão", 7.50, 40));
listaProdutos.add(new Produto("Açúcar", 3.20, 30));
// Imprimindo o tamanho da lista (requisito)
System.out.println("Tamanho da lista: " + listaProdutos.size());
// Recuperando um produto pelo índice (requisito)
Produto produtoRecuperado = listaProdutos.get(1);
System.out.println("Produto no índice 1: " + produtoRecuperado);
// Imprimindo a lista de produtos usando toString() (requisito)
System.out.println("\nLista de produtos:");
System.out.println(listaProdutos);
// Criando um ProdutoPerecivel (requisito)
Date dataValidade = new Date(System.currentTimeMillis() + (1000L * 60 * 60 * 24 * 30)); // 30 dias no futuro
ProdutoPerecivel produtoPerecivel = new ProdutoPerecivel("Leite", 4.75, 20, dataValidade);
// Imprimindo o produto perecível
System.out.println("\nProduto Perecível:");
System.out.println(produtoPerecivel);
}
}