Projeto no github :
https://github.com/IgorMiyada/CreditCardLimit
Interfaces :
public interface CalcularSaldoCartao {
public boolean temSaldo(double valorDaCompra);
}
public interface CalculoTotalDeCompras {
public double calcularCompras();
}
Classses :
public class CarrinhoDeCompras implements CalculoTotalDeCompras{
private List<Produto> listaDeProdutos = new ArrayList<>();
private double totalDeCompras = 0;
public void adicionarProduto(Produto produto){
this.listaDeProdutos.add(produto);
}
public void exibirListaDeCompras(){
for (Produto produto : listaDeProdutos){
System.out.println(produto);
}
}
public void organizarLista(){
this.listaDeProdutos.sort(Comparator.comparing(Produto::getPrice));
}
@Override
public double calcularCompras() {
for (Produto produto : listaDeProdutos){
totalDeCompras+=produto.getPrice();
}
return totalDeCompras;
}
public List<Produto> getListaDeProdutos() {
return listaDeProdutos;
}
public double getTotalDeCompras() {
return totalDeCompras;
}
}
public class Cartao implements CalcularSaldoCartao{
private double limiteCartao = 0;
@Override
public boolean temSaldo(double valorDaCompra) {
if(valorDaCompra<limiteCartao){
limiteCartao-=valorDaCompra;
return true;
}
System.out.println("Limite insuficiente");
return false;
}
public double getLimiteCartao() {
return limiteCartao;
}
public void setLimiteCartao(double limiteCartao) {
this.limiteCartao = limiteCartao;
}
}
public class Menu {
public static void exibirTodasAsCompras(CarrinhoDeCompras carrinhoDeCompras,Cartao cartao){
System.out.println("Produtos comprados : ");
carrinhoDeCompras.exibirListaDeCompras();
System.out.println("Saldo restante : ");
System.out.println(cartao.getLimiteCartao());
}
}
public class Produto {
private final String name;
private final double price;
public Produto(String productName,double price){
this.name = productName;
this.price = price;
}
@Override
public String toString() {
return this.getName() + " valor : " + this.getPrice();
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
}
Main :
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Cartao cartao = new Cartao();
CarrinhoDeCompras carrinhoDeCompras = new CarrinhoDeCompras();
System.out.println("Insira um limite de cartão : ");
double limiteCartao = sc.nextDouble();
cartao.setLimiteCartao(limiteCartao);
sc.nextLine();
String opcaoSair = "0";
while(opcaoSair.equals("0")){
try{
System.out.println("Enter the product name : ");
String productName = sc.nextLine();
System.out.println("Enter the product price : ");
double productPrice = sc.nextDouble();
if(cartao.temSaldo(productPrice)){
carrinhoDeCompras.adicionarProduto(new Produto(productName,productPrice));
}
System.out.println("Press 0 to buy another product or 1 to exit ");
opcaoSair = sc.next();
sc.nextLine();
}catch (InputMismatchException error){
System.out.println("Entrada inválida ! " + error);
}
}
carrinhoDeCompras.organizarLista();
Menu.exibirTodasAsCompras(carrinhoDeCompras,cartao);
}
}