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

[Projeto] Solução projeto Compras

Implementei a ordenação da lista de uma outra forma e gostaria saber se também é correto utilizar dessa forma, ou se é preferível fazer conforme foi passado no curso:

//Ordenando itens da lista
        venda.getProdutos().sort((p1, p2) -> Double.compare(p1.getValor(), p2.getValor()));

Classe Conta

public class Conta {
    private double limite;
    private double saldo;

    public Conta(double limite) {
        this.limite = limite;
        this.saldo = limite;
    }

    public double getLimite() {
        return limite;
    }

    public double getSaldo() {
        return saldo;
    }

    public void realizaCompra(double vl){
        this.saldo -= vl;
    }

    @Override
    public String toString() {
        return "Saldo disponível: " + getSaldo();
    }
}

Classe Produto

public class Produto {
    private String descricao;
    private double valor;

    public String getDescricao() {
        return descricao;
    }
    public Produto(String descricao, double valor) {
        this.descricao = descricao;
        this.valor = valor;
    }
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
    public double getValor() {
        return valor;
    }
    public void setValor(double valor) {
        this.valor = valor;
    }

    @Override
    public String toString() {
        return "Produto: " + getDescricao() + " Valor R$-" +  getValor();
    }
}

Classe Venda

public class Venda {

    private Conta conta;
    private List<Produto> produtos = new ArrayList<>();

    public Venda(Conta conta) {
        this.conta = conta;
    }

    public Conta getConta() {
        return conta;
    }

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

    public boolean addProdutos(Produto produto) {
        if(conta.getLimite() > produto.getValor()){
            this.produtos.add(produto);
            this.conta.realizaCompra(produto.getValor());
            return true;
        }else {
            return false;
        }
    }
}

Classe Principal

public class Principal {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("Informe o limite do cartão: ");
        double limite = sc.nextDouble();
        Conta conta = new Conta(limite);
        Venda venda = new Venda(conta);

        int sair = 1;

        while (sair != 0){
            System.out.println("Informe a descricao do produto: ");
            String descricao = sc.next();
            System.out.println("Informe o valor do produto: ");
            double valor = sc.nextDouble();
            Produto produtos = new Produto(descricao, valor);
            if(conta.getSaldo() >= valor){
                venda.addProdutos(produtos);
            }else {
                System.out.println("Saldo insuficiente para realizar a compra!");
                break;
            }
            System.out.println("Digite 0 para sair ou 1 para incluir outro produto!");
            sair = sc.nextInt();
        }
        //Ordenando itens da lista
        venda.getProdutos().sort((p1, p2) -> Double.compare(p1.getValor(), p2.getValor()));

        System.out.println(conta.toString());
        System.out.println("Itens comprados: ");
        for (Produto prod: venda.getProdutos()) {
            System.out.println("Item: " + prod.getDescricao() + " Valor R$" + prod.getValor());
        }
    }
}
1 resposta
solução!

Oi, Jhonatan! Tudo bem?

Parabéns pelo projeto, é sempre muito bom poder acompanhar nossos alunos aplicando os conhecimentos adquiridos nos nossos cursos e elaborando seus códigos, bate um orgulho! Sua iniciativa é uma ótima forma de exercitar conceitos de programação.

Obrigada também por compartilhar o seu código aqui na nossa comunidade do fórum!

Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!