2
respostas

[Projeto] Aplicação para Compras - (Projeto-smart-shopper)

Classe Compra

public class Compra {

private String descricao;
private double valor;

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

public String getNome() {
    return descricao;
}

public double getValor() {
    return valor;
}

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

}

Classe Cartão de Crédito

public class CartaoDeCredito {

private double limite;
private double saldo;

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

public boolean limiteDisponivel(Compra compra) {
    if(this.saldo >= compra.getValor()) {
        this.saldo -= compra.getValor();
        return true;
    }
    return false;
}

public double getLimite() {
    return limite;
}

public double getSaldo() {
    return saldo;
}

}

Classe Principal

public class Principal { public static void main(String[] args) {

    System.out.println("***** Aplicação de Compras *****");

    // Criação do Scanner para entrada do usuário
    Scanner leitura = new Scanner(System.in);

    // Definição do limite do cartão de crédito
    System.out.println("Digite o limite do cartão:");
    double limite = leitura.nextDouble();
    CartaoDeCredito cartaoDeCredito = new CartaoDeCredito(limite);

    // Lista para armazenar as compras realizadas
    List<Compra> carrinho = new ArrayList<>();

    int opcao = 1; // Variável de controle do loop de compras
    while (opcao != 0) {
        // Solicita a descrição da compra
        System.out.println("Digite a descrição da compra:");
        String descricao = leitura.next();

        // Solicita o valor da compra
        System.out.println("Digite o valor da compra:");
        double valor = leitura.nextDouble();

        Compra compra = new Compra(descricao, valor);

        // Verifica se há limite suficiente para a compra
        if (!cartaoDeCredito.limiteDisponivel(compra)) {
            System.out.println("SALDO INSUFICIENTE! Compra não realizada.");
            break; // Sai do loop caso não haja saldo suficiente
        } else {
            // Adiciona a compra ao carrinho e exibe o saldo atualizado
            System.out.println("Compra realizada com sucesso!:");
            carrinho.add(compra);
            System.out.println("Seu Saldo restante é de: R$ " + cartaoDeCredito.getSaldo());

            // Pergunta se deseja continuar comprando
            System.out.println("Digite 0 para encerrar ou 1 para continuar comprando:");
            opcao = leitura.nextInt(); // Atualiza a resposta para evitar loop infinito
        }
    }
    // Exibe o resumo das compras realizadas
    System.out.println("********************");
    System.out.println("COMPRAS REALIZADAS:");

    // Ordena a lista de compras pelo valor (do menor para o maior)
    carrinho.sort(Comparator.comparing(Compra::getValor));
    // Exibe as compras realizadas, uma por linha
    carrinho.forEach(System.out::println);
    System.out.println("********************");
    System.out.println("Seu Saldo restante é de R$: " + cartaoDeCredito.getSaldo());
    // Fecha o Scanner para evitar vazamento de recursos
    leitura.close();
}

}

2 respostas

Olá, Brigida. Tudo bem?

Muito obrigado por compartilhar o seu código aqui com a gente. Parabéns pelo trabalho. Continue com essa dedicação.

Ótimo como você organizou suas classes Compra e CartaoDeCredito, fazendo a verificação do saldo disponível de forma bem clara. Além disso, o controle do loop na classe Principal está ótimo para garantir que o usuário só consiga continuar comprando quando houver saldo suficiente.

Uma curiosidade interessante: você pode usar o método forEach para percorrer listas de forma ainda mais simples. Veja o exemplo abaixo:


carrinho.forEach(compra -> System.out.println(compra));

Esse método permite percorrer cada elemento da lista carrinho e executar um comando sobre ele. No caso, o comando é imprimir o objeto compra. Isso deixa o código mais conciso.

Conte com o apoio do Fórum. Bons estudos!

Olá, Renan! Obrigada pela dica. Muito bom contar com o apoio.