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

[Projeto] [Duvida]Projeto Final App de Compras

Fiz um pouco diferente com o projeto, gostaria de saber se é valido.


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

public class Produtos extends Dados implements Comparable<Produtos>{
    private String item;
    private double valorItem;
    private List<Produtos> produtos; // -> Necessario a crescimo do List<+ a classe> e a variavel.

    public Produtos() {
        this.produtos = new ArrayList<>();
    }

    public void adicionarProduto(String item, double valorItem) { /* -> Aqui foi configurado para que item escrito e o
       valor colcocado pelo usuario possa ser registrado e armazenado pelo produtos.add(novoProduto) */
        Produtos novoProduto = new Produtos();
        novoProduto.setItem(item);
        novoProduto.setValorItem(valorItem);
        produtos.add(novoProduto);
    }

    public List<Produtos> getProdutos() {
        return produtos;
    }

    public String getItem() {
        return item;
    }
    public void setItem(String item) {
        this.item = item;
    }

    public double getValorItem() {
        return valorItem;
    }
    public void setValorItem(double valorItem) {
        this.valorItem = valorItem;
    }

    @Override
    public int compareTo(Produtos outroProduto) {
        return Double.valueOf(this.valorItem).compareTo(Double.valueOf(outroProduto.valorItem));
    }
}

public class Dados {
    private double limite;

    public double getLimite() {
        return limite;
    }
    public void setLimite(double limite) {
        this.limite =  limite;
    }
}

import java.util.Collections;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        var comprador = new Produtos();
        var teclado = new Scanner(System.in);
        int decisao = 1;
        double valorTotal = 0;
        comprador.setLimite(1000);

        System.out.println("Limite do cartão: R$ "+ comprador.getLimite());
        System.out.println("********************************************");
        double valorAtual = comprador.getLimite();
        do {
            System.out.println("Digite a descrição do produto");
            System.out.print("Produto: ");
            comprador.setItem(teclado.next());
            System.out.println();
            System.out.println("Digite o valor da compra:");
            System.out.print("R$ ");
            comprador.setValorItem(teclado.nextDouble());
            
            if(comprador.getValorItem() <= valorAtual) {
                System.out.println("Compra Realizada!");
                System.out.println("------------------------------");
                System.out.println("Digite 0 para Sair ou 1 para Continuar");
                decisao = teclado.nextInt();
                comprador.adicionarProduto(comprador.getItem(), comprador.getValorItem()); /* -> Aqui foi chamado um
                 metodo public void adicionarProduto(String item, double valorItem) */
            } else {
                System.out.println("Saldo Insulficiente!!!");
                decisao = 0;
            }
            valorAtual = valorAtual- comprador.getValorItem();
        } while (decisao == 1 && valorAtual > 0);
        System.out.println("********************************************");
        System.out.println("************ COMPRAS REALIZADAS ************");
        Collections.sort(comprador.getProdutos());
        for (Produtos produto : comprador.getProdutos()){
            System.out.println(produto.getItem() + " R$ " + produto.getValorItem());
            valorTotal = valorTotal + produto.getValorItem();
        }
        System.out.println();
        System.out.println("Valor Total");
        System.out.println("R$ "+ valorTotal);

        System.out.println("********************************************");
        System.out.println("Saldo: R$"+ valorAtual);
        System.out.println("********************************************");
    }
}
1 resposta
solução!

Olá, Daniel!

Pelo que pude observar, você fez uma implementação bastante interessante para o projeto final do curso. Você criou uma classe Produtos que estende a classe Dados e implementa a interface Comparable, o que é uma ótima prática. Além disso, você usou uma lista de Produtos para armazenar os produtos adicionados, o que é totalmente válido.

No método adicionarProduto, você criou um novo objeto Produtos, definiu o item e o valor do item, e adicionou este objeto à lista de produtos. Isso está correto e é uma maneira eficaz de adicionar novos produtos à lista.

No método main, você criou um objeto Produtos, definiu um limite, e em seguida, entrou em um loop onde o usuário pode adicionar produtos até que o limite seja atingido ou o usuário decida sair. Isso também é uma abordagem válida.

No final, você ordenou a lista de produtos e imprimiu todos os produtos e o valor total. Isso está correto e é uma boa prática para fornecer um resumo das compras realizadas.

Então, para responder à sua pergunta, sim, sua implementação é válida e parece estar funcionando corretamente. Parabéns pelo ótimo trabalho!

Lembre-se que, em programação, geralmente existem várias maneiras de resolver um problema e sua abordagem é apenas uma delas. A solução proposta no curso é outra maneira de fazer isso, mas isso não significa que sua solução seja menos válida ou eficaz.

Espero ter ajudado e bons estudos!