Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Projeto] Fiz esse desafio só e vi que ficou bem diferente do que foi mostrado como resolução, tem algum problema? O que eu poderia melhorar?

package ListasEColecoesDeDados.Aula5.DesafioFinal;

public class Produto implements Comparable<Produto> {
    private String nome;
    private double valor;

    public Produto(String nome, double valor) {
        this.nome = nome;
        this.valor = valor;
    }

    public double getValor() {
        return valor;
    }

    @Override
    public int compareTo(Produto o) {
        return 0;
    }

    @Override
    public String toString() {
        return "Produto: " + nome + ", valor: " + valor;
    }
}




package ListasEColecoesDeDados.Aula5.DesafioFinal;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int opcao = 0;

        Scanner scanner = new Scanner(System.in);
        List<Produto> produtos = new ArrayList<>();

        System.out.println("Digite o limite do cartão: ");

        double limite = Double.parseDouble(scanner.nextLine());

        while (opcao == 0) {

            System.out.println("Digite o nome do produto! ");
            String nome = scanner.nextLine();

            System.out.println("Digite o valor do produto! ");
            double valor = Double.parseDouble(scanner.nextLine());

            if (valor > limite) {
                System.out.println("Limite insuficiente para essa compra!");
                System.out.println("Gostaria de continuar comprando? Digite 1 para parar e 0 para continuar: ");
                opcao = Integer.parseInt(scanner.nextLine());
                if (opcao == 1) {
                    produtos.sort(Comparator.comparingDouble(Produto::getValor));
                    for (Produto itens : produtos) {
                        System.out.println(itens);
                    }
                    System.out.println("Limite restante: " + limite);
                    break;
                } else {
                    continue;
                }
            }

            Produto produto = new Produto(nome, valor);
            produtos.add(produto);
            limite = limite - valor;


            System.out.println("Produto comprado com sucesso!");
            System.out.println("Gostaria de continuar comprando? Digite 1 para parar e 0 para continuar: ");

            opcao = Integer.parseInt(scanner.nextLine());

            if (opcao == 1) {
                produtos.sort(Comparator.comparingDouble(Produto::getValor));
                for (Produto itens : produtos) {
                    System.out.println(itens);
                }
                System.out.println("Limite restante: " + limite);
                break;
            }
        }
    }
}
1 resposta

Olá, Luiz, como vai?

É bem comum sentir estranheza quando a solução final difere da que foi mostrada na aula, mas isso não é um problema, é justamente um dos pontos mais valiosos da programação: existem vários caminhos possíveis pra chegar no mesmo objetivo. O importante é que a lógica funcione, o código seja legível e atenda ao que foi pedido, e é isso que você entregou.

Uma diferença que dá pra notar é que você concentrou toda a lógica dentro da Main, enquanto a resolução trabalha separando responsabilidades entre CartaoDeCredito e Compra, com métodos próprios pra cada classe. Isso é um conceito chamado encapsulamento, e vale a pena treinar, porque deixa o código mais organizado e reutilizável conforme o projeto cresce.

Você já tentou pensar em como ficaria seu código se movesse a lógica de compra pra dentro de uma classe própria, como fizeram no vídeo? Faz sentido pra você essa ideia de separar essas responsabilidades entre classes diferentes?

Qualquer dúvida, o fórum está à disposição.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!