package modelos;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CartaoDeCredito {
protected int limite;
protected int saldo;
protected List<Compra> listaDeCompras;
public CartaoDeCredito() {
this.listaDeCompras = new ArrayList<>(); // Inicialização da lista de compras
}
public boolean lancaCompra(Compra compra){
if(this.saldo > compra.getValor()){
this.saldo -= compra.getValor();
this.listaDeCompras.add(compra);
return true;
}
return false;
}
public void notaFiscal(){
ordenarListaDeCompras();
System.out.println("*************************");
System.out.println("Compras realizadas:");
for(Compra item: listaDeCompras){
System.out.println(item.toString());
}
System.out.println();
System.out.println("*************************");
System.out.println();
System.out.println("Saldo: "+this.saldo);
}
private void ordenarListaDeCompras(){
Collections.sort(listaDeCompras);
}
public void setLimiteSaldo(int limiteSaldo) {
this.limite = limiteSaldo;
this.saldo = limiteSaldo;
}
public int getLimite() {
return limite;
}
public int getSaldo() {
return saldo;
}
}
package modelos;
public class Compra implements Comparable<Compra> {
protected String descricao;
protected int valor;
public Compra(String descricao, int valor) {
this.descricao = descricao;
this.valor = valor;
}
public String getDescricao() {
return descricao;
}
public int getValor() {
return valor;
}
@Override
public String toString() {
return "Compra(" +
"descrição= '" + descricao + '\'' +
", valor= " + valor +
')';
}
@Override
public int compareTo(Compra outraCompra) {
if (this.valor > outraCompra.valor){
return -1;
}else if (this.valor < outraCompra.valor){
return +1;
}
return 0;
}
}
import modelos.CartaoDeCredito;
import modelos.Compra;
import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
CartaoDeCredito cartaoDeCredito = new CartaoDeCredito();
//Colocar o limite e o saldo do Cartão.
System.out.println("Digite o limite do catão:");
cartaoDeCredito.setLimiteSaldo(sc.nextInt());
//Começo do loop onde acontece os registro de objetos e o pagamento
int escolha;
do {
System.out.println("Digite a descrição do produto:");
String nomeDoProduto = sc.next();
System.out.println("Digite o Valor do produto:");
int valorDoProduto = sc.nextInt();
Compra compra = new Compra(nomeDoProduto, valorDoProduto);
if (!cartaoDeCredito.lancaCompra(compra)){
System.out.println("Saldo Insulficiente!");
break;
}else {
System.out.println("Compra realizada!");
}
System.out.println("Digite 0 para sair ou 1 para continuar:");
escolha = sc.nextInt();
}while (escolha != 0);
cartaoDeCredito.notaFiscal();
}
}