package desafio_curso_java_oo.src.souza.cruz.oo.desafio.java.modelos;
import java.util.ArrayList;
import java.util.List;
public class CartaoDeCredito {
private double saldo;
public CartaoDeCredito(double limite) {
this.saldo = limite;
List<Compra> compras = new ArrayList<>();
}
public double getSaldo() {
return saldo;
}
public boolean lancaCompra(Compra compra) {
if(this.saldo >= compra.precoProduto()) {
this.saldo -= compra.precoProduto();
return true;
}
return false;
}
}
package desafio_curso_java_oo.src.souza.cruz.oo.desafio.java.modelos;
import java.text.NumberFormat;
import java.util.Locale;
public record Compra(String nomeProduto, double precoProduto) implements Comparable<Compra> {
@Override
public String toString() {
Locale localBrasil = new Locale("pt", "BR");
return "Compra: descricao= " + nomeProduto +
", valor = " + NumberFormat.getCurrencyInstance(localBrasil).format(precoProduto);
}
@Override
public int compareTo(Compra outraCompra) {
return Double.compare(this.precoProduto, outraCompra.precoProduto);
}
}
package desafio_curso_java_oo.src.souza.cruz.oo.desafio.java.Principal;
import desafio_curso_java_oo.src.souza.cruz.oo.desafio.java.modelos.CartaoDeCredito;
import desafio_curso_java_oo.src.souza.cruz.oo.desafio.java.modelos.Compra;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Locale;
import java.util.Scanner;
public class Principal {
static ArrayList<Compra> listaCompras = new ArrayList<>();
public static void main(String[] args) {
Scanner leitura = new Scanner(System.in);
int opcaoMenu = 0;
String menuPrincipal = """
******* ESCOLHA UMA OPÇÃO *******
1- Efetuar Compra
2- Consultar Compras
3- Consultar Limite do Cartão
9 - Sair
""";
System.out.println("Informe o limite do cartão");
CartaoDeCredito cartao = new CartaoDeCredito(leitura.nextDouble());
while (opcaoMenu != 9) {
System.out.println(menuPrincipal);
opcaoMenu = leitura.nextInt();
switch (opcaoMenu) {
case 1:
String opcao = "s";
while (opcao.equalsIgnoreCase("s")){
System.out.println("Digite o nome do produto");
String nome = leitura.next();
System.out.println("Digite o preço do produto");
double preco = leitura.nextDouble();
Compra compra = new Compra(nome, preco);
if (cartao.lancaCompra(compra)){
listaCompras.add(compra);
System.out.println("Deseja lançar mais algum produto? (S/N)");
opcao = leitura.next();
} else {
System.out.println("Saldo Insuficiente");
listarCompras();
System.out.println("Seu saldo disponível é: " + cartao.getSaldo());
break;
}
}
break;
case 2:
listarCompras();
break;
case 3:
Locale localBrasil = new Locale("pt", "BR");
System.out.println("Limite do Cartão Disponível: " + NumberFormat.getCurrencyInstance(localBrasil).format(cartao.getSaldo()));
default:
break;
}
}
}
private static void listarCompras() {
System.out.println("*****************************");
System.out.println("Suas compras");
Collections.sort(listaCompras);
for(Compra c : listaCompras){
System.out.println(c.getNomeProduto() + " - " + c.getPrecoProduto());
}
}
}