Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Meu projeto do Desafio App de Compras

Olá pessoal, gostaria de compartilhar meu projeto desenvolvido durante o curso de Java com Orientação a Objetos. Neste desafio coloquei em prática os conceitos de implementações de interfaces, ordenação de listas e entre outras dicas demonstradas no curso.

package br.com.alura.desafioAppCompras.modelos;

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

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

    public String getDescricao() {
        return descricao;
    }

    public double getValor() {
        return valor;
    }
}
package br.com.alura.desafioAppCompras.modelos;

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

public class ContaBancaria {
    private double saldo;
    private List<Produto> compras = new ArrayList<>();
    public ContaBancaria(double saldo) {
        this.saldo = saldo;
    }

    public void realizaCompra(String descricao, double valor){
        if (this.saldo >= valor) {
            Produto produto = new Produto(descricao, valor);
            this.compras.add(produto);
            saldo -= valor;
            System.out.println("Compra realizada!");
        } else {
            System.out.println("Saldo insuficiente!");
        }
    }

    public void exibeCompras(){
        System.out.println("""
                ***************************************
                COMPRAS REALIZADAS:\n
                """);
        //Ordenando a lista com base no preco dos produtos.
        Collections.sort(compras, new ComparadorDePreco());

        for (Produto produto : compras) {
            System.out.println(produto.getDescricao() + ": R$" + produto.getValor());
        }
        System.out.println("\nSaldo: R$" + this.saldo);
        System.out.println("\n***************************************");
    }
    public double getSaldo() {
        return saldo;
    }

}
package br.com.alura.desafioAppCompras.modelos;

import java.util.Comparator;

public class ComparadorDePreco implements Comparator<Produto> {
    @Override
    public int compare(Produto produto1, Produto produto2) {
        return Double.compare(produto1.getValor(), produto2.getValor());
    }
}
package br.com.alura.desafioAppCompras.principal;

import br.com.alura.desafioAppCompras.modelos.ContaBancaria;

import java.util.Scanner;

public class Principal {
    public static void main(String[] args) {
        //Declaração de variáveis.
        boolean aplicacaoRodando = true;
        int opcaoDoMenu;
        double limite, valor;
        String nomeProduto;
        Scanner leitor = new Scanner(System.in);

        //Inicializando conta.
        System.out.println("Digite o limite do cartão de crédito para iniciar: ");
        do {
            limite = leitor.nextDouble();
            if (limite <= 0) {
                System.out.println("Digite um valor positivo!");
            }
        } while (limite <= 0);

        ContaBancaria conta = new ContaBancaria(limite);

        //Menu de opções.
        while (aplicacaoRodando){
            System.out.println("""
                    \nMenu de Opções
                    1- Realizar compra
                    2- Consultar extrato
                    3- Sair\n
                    """);
            opcaoDoMenu = leitor.nextInt();

            switch (opcaoDoMenu){
                case 1:
                    System.out.println("Digite a descrição do produto: ");
                    nomeProduto = leitor.next();
                    System.out.println("Digite o valor do produto: ");
                    do {
                        valor = leitor.nextDouble();
                        if (valor <= 0) {
                            System.out.println("Digite um valor positivo!");
                        }
                    } while (valor <= 0);
                    conta.realizaCompra(nomeProduto, valor);
                    break;
                case 2:
                    conta.exibeCompras();
                    break;
                case 3:
                    aplicacaoRodando = false;
                    break;
                default:
                    System.out.println("Opção inválida!");
                    break;
            }

        }
    }
}

Aqui estão todas as classes do meu projeto.

Este é um exemplo do resultado em console:

Exemplo de resultado

2 respostas
solução!

Olá Jorge, tudo bem com você?

Meus parabéns pela implementação do desafio colocando em prática os conceitos apresentados durante as aulas. Fico feliz que tenha compartilhado sua resolução com a comunidade do fórum Alura. Continue com essa dedicação, pois ela é muito importante para o seu desenvolvimento na área da programação.

A título de curiosidade, podemos utilizar a função repeat para repetir um caractere um determinado número de vezes, no exemplo abaixo o caractere x será repetido 30 vezes:

System.out.println("x".repeat(30));

Espero ter ajudado. Continue mergulhando em conhecimento e não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Em caso de dúvidas estou à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Olá Felippe, tudo bem obrigado.

Muito obrigado pela interação. Eu não sabia dessa função repeat(), vou testar nas próximas implementações.

Abraços.