Gostaria de saber se meu código está bom ou se tem muita coisa a ser melhorada, sei que está diferente do apresentado, mas não sei se isso é MUITO relevante ou se mal interfere. Segue código:
Main
package main;
import Control.Cartao;
import Control.Compra;
import java.util.Scanner;
public class Main {
public static void main() {
Scanner leitor = new Scanner(System.in);
System.out.println("Digite o limite do cartão: ");
Double limite = leitor.nextDouble();
leitor.nextLine();
Cartao cartao = new Cartao(limite);
Integer opcao = 1;
while (opcao != 0) {
System.out.println("Digite a descricao da compra: ");
String descricao = leitor.nextLine();
//compra.setDescricao(descricao);
System.out.println("Digite o valor da compra: ");
Double valor = leitor.nextDouble();
//compra.setValor(valor);
Compra compra = new Compra(descricao, valor);
cartao.realizarCompra(compra);
if (cartao.verificarLimite(valor) == true) {
System.out.println("Compra Realizada!");
System.out.println("Digite 0 para sair ou 1 para continuar");
opcao = leitor.nextInt();
leitor.nextLine();
} else {
opcao = 0;
}
}
System.out.println("Programa Encerrado!\n");
System.out.println("*******************");
System.out.println("COMPRAS REALIZADAS:");
cartao.imprimirCompra();
}
}
Cartao
package Control;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Cartao {
private Double limite;
private Double saldo;
public Cartao(Double limite) {
this.limite = limite;
this.saldo = limite;
}
public Double getLimite() {
return limite;
}
// public void setLimite(Double limite) {
// this.limite = limite;
// }
public boolean verificarLimite(Double valor) {
if (this.limite >= valor) {
return true;
} else {
return false;
}
}
List<Compra> itensCompra = new ArrayList<>();
public void realizarCompra(Compra compra) {
if (verificarLimite(compra.getValor()) == true) {
itensCompra.add(compra);
this.limite = getLimite() - compra.getValor();
} else {
System.out.println("Saldo Insuficiente");
}
}
public void imprimirCompra() {
itensCompra.sort(Comparator.comparing(Compra::getValor));
for (Compra item: itensCompra) {
System.out.println(item.getDescricao() + " - " + item.getValor());
}
}
}
Compra
package Control;
public class Compra {
public Compra(String descricao, Double valor) {
this.descricao = descricao;
this.valor = valor;
}
private String descricao;
private Double valor;
public String getDescricao() {
return descricao;
}
// public void setDescricao(String descricao) {
// this.descricao = descricao;
// }
public Double getValor() {
return valor;
}
// public void setValor(Double valor) {
// this.valor = valor;
// }
}