0
respostas

[Dúvida] Dúvida sobre projeto de cartão de crédito

Escrevi um código que a professora jaque passou, é sobre um sistema de cartão de credito. Eu fiz sozinho todo o código tentando implementar o máximo de conceitos que aprendi sobre POO. E o código ficou assim:

public class Aux {
    private double valor;
    private String descricao;

    public Aux(String descricao, double valor) {
        this.descricao = descricao;
        this.valor = valor;
    }

    public double getValor() {
        return valor;
    }

//Polimorfismo para que apareça a mensagem desejada, para isso foi necessario mudar o metodo to string
    @Override
    public String toString() {
        return descricao + ": R$" + valor + System.lineSeparator();
    }
}
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class Lista {
    
    private List<Aux> historico_de_compras = new ArrayList<>();
    
    public void setadiciona(String descricao, double valor){
        historico_de_compras.add(new Aux(descricao, valor));
    }

    public void ordena() {
        historico_de_compras.sort(Comparator.comparing(Aux::getValor));
    }

    public List<Aux> getHistorico_de_compras() {
        return historico_de_compras;
    }
}
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        double saldo = 0;
        int i = 0;
        int contador = 0;

        Lista lista = new Lista();
        Scanner escreva = new Scanner(System.in);

        System.out.println("Digite o limite do seu cartão");
        double saldoDoCartao = escreva.nextDouble();

        while (i == 0) {

            System.out.println("Digite 0 para realizar uma compra ou digite 1 para sair");
            i = escreva.nextInt();

            if (i != 0 && i != 1) {
                System.out.println("Digite um número válido");
                i = 0;
            } else if (i == 0 ) {
                System.out.print("Digite o nome do produto");
                escreva.nextLine();
                String produto = escreva.nextLine();
                System.out.println("Digite o preço do produto");
                double preco = escreva.nextInt();
                if (preco > saldoDoCartao) {
                    System.out.println("Saldo insuficiente");
                    i = 1;
                } else {
                    saldoDoCartao = saldoDoCartao - preco;
                    lista.setadiciona(produto, preco);
                    contador ++;
                }

            }
        }

        if (contador == 0) {
            System.out.println("nenhuma compra feita");
        }else {
            System.out.println("lista de produtos comprados");
            lista.ordena();
            for (int j = 0; j < contador; j++) {
                System.out.println(lista.getHistorico_de_compras().get(j));
            }

        }
    }
}

Executei o código e funcionou normalmente. Só que depois que eu consegui concluir esse desafio eu fui ver como a professora fez e vi que o meu ficou muito diferente. A minha dúvida é se o código que escrevi pode ser considerado um código bem escrito. Se houver algo que eu possa melhorar no código eu ficaria muito contente se compartilha-se comigo, desde já agradeço.