0
respostas

[Projeto] Desafio Compras no Cartão de Crédito

Boa Tarde, gostaria de compartilhar minha abordagem para o projeto do cartão de crédito

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

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

    public int getLimite() {
        return limite;
    }

    private boolean limiteSuficiente(Compra compra) {
        return saldo < limite && limite > 0 && compra.getValor() <= limite;
    }

    public void adicionarCompra(Compra compra) {
        if (limiteSuficiente(compra)) {
            compras.add(compra);
            limite -= compra.getValor();
            saldo += compra.getValor();
        } else {
            ExceptionHandler.handleLimiteInsuficiente();
        }
    }

    public void imprimirCompras() {
        compras.forEach(IO::println);
    }

    private void ordenaCompras() {
        compras.sort(Comparator.reverseOrder());
    }

    public void imprimemComprasOrdenadas() {
        ordenaCompras();
        imprimirCompras();
    }

    @Override
    public String toString() {
        return "Cartao{" + "limite=" + limite + ", compras=" + compras + '}';
    }
}
public class Compra implements Comparable<Compra> {
    private String produto;
    private double valor;

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

    public Double getValor() {
        return valor;
    }

    @Override
    public String toString() {
        return produto + " - R$ " + valor;
    }

    @Override
    public int compareTo(Compra outraCompra) {
        return getValor().compareTo(outraCompra.getValor());

    }
}