1
resposta

[Projeto] Sistema de Compras


public class Compra implements Comparable<Compra>{
    private String produto;
    private double valor;

    public String getProduto() {
        return produto;
    }

    public void setProduto(String produto) {
        this.produto = produto;
    }

    public double getValor() {
        return valor;
    }

    public void setValor(double valor) {
        this.valor = valor;
    }

    public Compra(String produto, double valor) {
        this.produto = produto;
        this.valor = valor;
    }

    @Override
    public String toString() {
        return "Compra{" +
                "produto='" + produto + '\'' +
                ", valor=" + valor +
                '}';
    }

    // Sobrescrevendo o método comprareTo()

    @Override
    public int compareTo(Compra novaCompra) {
        // Fazendo uso da classe <wrapper> para ordenar valores do tipo Double
        return Double.valueOf(this.valor).compareTo(Double.valueOf(novaCompra.valor));
    }
}

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

public class CartaoDeCredito {
    private double limite;
    private double saldo;
    private List<Compra> compras;

    public CartaoDeCredito(double limite) {
        this.limite = limite;
        this.saldo = limite;
        this.compras = new ArrayList<>();
    }

    public double getLimite() {
        return limite;
    }

    public double getSaldo() {
        return saldo;
    }

    public List<Compra> getCompras() {
        return compras;
    }

    // Valida se o saldo do cartão é maior que o valor da compra, e adiciona a compra
    public boolean lancarCompra(Compra compra) {
        if (this.saldo >= compra.getValor()) {
            this.saldo -= compra.getValor();
            this.compras.add(compra);
            return true;
        } else {
            return false;
        }
    }
}

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

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

        System.out.println("Informe o limite do cartão:");
        Double limite = leitura.nextDouble();
        //Instanciar a classe CartaoDeCredito
        CartaoDeCredito cartao = new CartaoDeCredito(limite);

        // Loop
        int opcao = 1;
        while (opcao != 0) {
            System.out.println("Informe o produto:");
            String produto = leitura.next();
            System.out.println("Informe o valor do produto:");
            double valor = leitura.nextDouble();

            // Instanciar a classe Compra
            Compra compra = new Compra(produto, valor);

            // Invocar o método lancarCompra()
            boolean compraRealizada = cartao.lancarCompra(compra);

            if (compraRealizada) {
                System.out.println("Compra realizada!");
                System.out.println("Digite [0] para <sair> ou [1] para <continuar>");
                opcao = leitura.nextInt();
            } else {
                System.out.println("Saldo insuficiente!\n");
                opcao = 0;
            }
        }

        // Imprimir resumo da compra
        System.out.println("Compra finalizada:\n");
        System.out.println("Resumo da compra:");
        System.out.println("-------------------------------");
        System.out.println("Produto:\t\tValor:");
        System.out.println("-------------------------------");

        Collections.sort(cartao.getCompras());  // Ordenar valor em ordem crescente

        for (Compra compra : cartao.getCompras()){
            System.out.println(compra.getProduto() + "\t\t\t" + compra.getValor());
        }

        System.out.println("-------------------------------");

        // Imprimir saldo do cartão
        System.out.println("\n*******************************");
        System.out.println("Saldo disponível: " + cartao.getSaldo());
        System.out.println("*******************************");
    }

}
1 resposta

Olá, Everaldo! Como vai?

A sua implementação está bastante sólida, parabéns! Caso haja alguma dúvida mais específica ou algum problema que enfrentou durante a implementação, sinta-se à vontade para compartilhar, ficarei feliz em poder ajudar.

Um forte abraço e bons estudos!