1
resposta

Reduzir linhas no código

Boa noite, tudo bem? no meu código principal tive que escrever mais de uma vez essa parte produto2.pagamentoPix = "Pix"; produto2.pagamentoDinheiro = "Dinheiro"; produto2.pagamentoCartao = "Cartão"; Gostaria de saber se há outra possibilidade

public class Produto {
    public String nomeEstabelecimento;
    private String nome;
    private double precoProduto;
    public String pagamentoPix;
    public String pagamentoDinheiro;
    public String pagamentoCartao;

    public String getNomeEstabelecimento() {
        return nomeEstabelecimento;
    }

    public void setNomeEstabelecimento(String nomeEstabelecimento) {
        this.nomeEstabelecimento = nomeEstabelecimento;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public double getPrecoProduto() {
        return precoProduto;
    }

    public void setPrecoProduto(double precoProduto) {
        this.precoProduto = precoProduto;
    }

    public void descontoPercentual(double percentual, String metodoPagamento){
        if (metodoPagamento.equals(pagamentoDinheiro )  || metodoPagamento.equals(pagamentoPix) ){
            double desconto = precoProduto * (percentual / 100);
            precoProduto -= desconto;

        } else if (metodoPagamento.equals(pagamentoCartao)) {
            double acrescimo = precoProduto * (percentual);
            precoProduto += acrescimo;

        }

    }

}
public class Principal {
    public static void main(String[] args) {
        // Dados do Primeiro Produto
        Produto produto1 = new Produto();
        produto1.setNomeEstabelecimento("Bar do João Curuca");
        produto1.setNome("Cachaça");
        produto1.setPrecoProduto(15.50);
        produto1.pagamentoPix = "Pix";
        produto1.pagamentoDinheiro = "Dinheiro";
        produto1.pagamentoCartao = "Cartão";

        // Dados do Segundo Produto
        Produto produto2 = new Produto();
        produto2.setNomeEstabelecimento("Bar do Nirdão");
        produto2.setNome("Torresmo");
        produto2.setPrecoProduto(8.50);
        produto2.pagamentoPix = "Pix";
        produto2.pagamentoDinheiro = "Dinheiro";
        produto2.pagamentoCartao = "Cartão";

        System.out.println("############# Resumo da Compra ##############\n");
        System.out.println("Nome do Estabelecimento : " + produto1.getNomeEstabelecimento());
        System.out.println("Produto : " + produto1.getNome());
        System.out.println("Preço R$ " + produto1.getPrecoProduto());
        produto1.descontoPercentual(10, produto1.pagamentoPix);
        System.out.println("Preço com Desconto R$ " + produto1.getPrecoProduto());
        System.out.println("\nNome do Estabelecimento : " + produto2.getNomeEstabelecimento());
        System.out.println("Produto : " + produto2.getNome());
        System.out.println("Preço R$ " + produto2.getPrecoProduto());
        produto2.descontoPercentual(10, produto2.pagamentoPix);
        System.out.println("Preço com Desconto R$ " + produto2.getPrecoProduto());

        System.out.println("\n######################################### ");
    }
}
1 resposta

Oii André, como vai você? Espero que esteja bem!

Uma maneira de otimizar isso é criar um construtor na classe Produto para definir esses métodos de pagamento. Assim, você poderá definir esses valores no momento da criação do objeto Produto, evitando a repetição de código no método principal.

Vou deixar um exemplo abaixo:

Você pode criar um construtor na classe Produto que recebe os métodos de pagamento como parâmetros e os atribui aos respectivos atributos da classe. Dessa forma, ao criar um novo Produto, você já define os métodos de pagamento de uma vez só. Veja como ficaria o código:

public class Produto {
    // ... outros atributos e métodos

    public Produto(String pix, String dinheiro, String cartao) {
        this.pagamentoPix = pix;
        this.pagamentoDinheiro = dinheiro;
        this.pagamentoCartao = cartao;
    }

    // ... outros métodos
}

E no seu código principal, ao criar os produtos, você passaria os métodos de pagamento como argumentos para o construtor:

Produto produto1 = new Produto("Pix", "Dinheiro", "Cartão");
Produto produto2 = new Produto("Pix", "Dinheiro", "Cartão");

Dessa forma, você evita a repetição de código e deixa a criação dos produtos mais organizada.

Espero ter ajudado!

Caso tenha dúvidas, fico à disposição.

Abraços e bons estudos!