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: