Fala galera! Vai meu código maroto da solucao do projeto. Caso queiram clonar o projeto...só acessar o meu git.
https://github.com/tux-php/ProjetoComprasJava
Vlw.
package com.br.compras.controller;
public class Cartao {
private String agencia;
private String conta;
public Cartao(String agencia, String conta) {
this.agencia = agencia;
this.conta = conta;
}
public String getAgencia() {
return agencia;
}
public String getConta() {
return conta;
}
}
package com.br.compras.controller;
import java.util.ArrayList;
import java.util.List;
public class CartaoCredito extends Cartao {
private final double limite;
private double saldo;
private final List<Produto> compras;
public CartaoCredito(String agencia, String conta, double limite) {
super(agencia, conta);
this.limite = limite;
this.saldo = limite;
this.compras = new ArrayList<>();
}
public double getSaldo() {
return saldo;
}
public List<Produto> getCompras() {
return compras;
}
public boolean lancaCompra(Produto compra) {
if (getSaldo() > compra.getValor()) {
this.saldo -= compra.getValor();
this.compras.add(compra);
return true;
}
return false;
}
}
package com.br.compras.controller;
public class Produto implements Comparable<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;
}
@Override
public int compareTo(Produto produto) {
return Double.compare(getValor(),produto.getValor());
}
@Override
public String toString() {
return getDescricao() + " - " + getValor();
}
}
package com.br.compras.aplicacao;
import com.br.compras.controller.CartaoCredito;
import com.br.compras.controller.Produto;
import java.util.Collections;
import java.util.Scanner;
public class AplicacaoCompras {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Digite o limite do cartão: ");
double limite = scan.nextDouble();
CartaoCredito cc = new CartaoCredito("8888-8", "9.999-X", limite);
double totalDeCompras = 0;
int contador = 1;
boolean sair = false;
while (!sair) {
Produto[] p = new Produto[20];
System.out.println("Digite a descrição da compra " + contador + " : ");
String descProduto = scan.next();
System.out.println("Digite o valor da compra " + contador + " : ");
double vl = scan.nextDouble();
p[contador] = new Produto(descProduto, vl);
totalDeCompras += p[contador].getValor();
if (cc.lancaCompra(p[contador])) {
System.out.println("Compra realizada!");
System.out.println("Digite 0 para sair ou 1 para continuar");
int flag = scan.nextInt();
if (flag == 0) {
extratoConta(cc);
sair = true;
} else if (flag == 1) {
contador++;
} else {
System.out.println("Tecla errada.");
}
} else {
System.out.println("Saldo Insuficiente!");
extratoConta(cc);
sair = true;
}
}
}
private static void extratoConta(CartaoCredito cc) {
System.out.println("***********************");
System.out.println("COMPRAS REALIZADAS:");
//cc.getCompras().sort(Comparator.comparing(Produto::getValor));
Collections.sort(cc.getCompras());
for (Produto compras: cc.getCompras()) {
System.out.println(compras);
}
System.out.println("***********************");
System.out.println("Saldo do cartão: " + cc.getSaldo());
}
}