Sintaxe desta classe

12 respostas
E

Eu ainda não entendi direito a sintaxe dessa classe, alguém poderia me explicar melhor?

public class CandleBuilder {

        private double abertura;
        private boolean aberturaDefinida; 
        private double fechamento;
        private boolean fechamentoDefinido; 
        private double minimo;
        private boolean minimoDefinido;
        private double maximo;
        private boolean maximoDefinido;
        private double volume;
        private boolean volumeDefinido;
        private Calendar data;
        
        public CandleBuilder abertura(double abertura) {
                this.abertura = abertura;
                aberturaDefinida = true;
                return this;
        }
principalmente aqui:
public CandleBuilder abertura(double abertura)

12 Respostas

Giovani_Fiori

qual a sua duvida em relação a sintaxe?

não entendi o que vc precisa…

E

não tinha visto ainda essa sintaxe public CandleBuilder abertura(double abertura) . Pois sempre criei assim public double getAbertura() { return abertura; }

Giovani_Fiori

o primeiro item eh um construtor da classe.
o segundo eh um simples getter.

E

O pattern “builder” é muito útil (em vez de usar getters e setters bobocas) porque permite criar objetos de forma mais limpa. Um exemplo de uso da tal classe:

CandleBuilder cb = new CandleBuilder()
    .abertura (100.00)
    .fechamento (110.00)
    .minimo (50.00)
    .maximo (120.00);

Note que isso é mais legível que usar uma montanha de setters, ou um construtor com 4 parâmetros, como:

CandleBuilder cb = new CandleBuilder (100.00, 110.00, 50.00, 120.00); // qual é a abertura, fechamento, mínimo e máximo?
E

Tá eu já tinha visto construtor, mas desta maneira public final class Negocio { private final double preco; private final int quantidade; private final Calendar data; public Negocio(double preco, int quantidade, Calendar data) { this.preco = preco; this.quantidade = quantidade; this.data = data; }

Dessa maneira aí do builder ,ele estaria criando métodos com os nomes das variáveis? é isso?

Giovani_Fiori

neste caso ele está setando o comportamento padrão e o valor das variáveis quando vc instancia esta classe.

E

Mas não é nesse acima, mas neste aqui public CandleBuilder abertura(double abertura) { this.abertura = abertura; aberturaDefinida = true; return this; } que não sei.

Giovani_Fiori

ai vc está setando o valor das variáveis e tem a propria classe como retorno quando vc instancia ela…

agora como vai usar isso já não sei te dizer…

B

Isso é um método, não um construtor.

Basicamente é como o entanglement, isso é usado numa técnica chamada method chaining, que é o conceito principal por trás de interfaces fluentes.

nicolas_dias

cara a parte que voce esta com dificuldade não é um construtor mas sim
um metodo que tera como retorno um objeto do tipo CandleBuilder

E

public CandleBuilder abertura(double abertura) { this.abertura = abertura; aberturaDefinida = true; return this; }

então assim: essa parte “abertura(” é um método da classe CandleBuilder, que recebe um double e o popula, ainda popula a variável abertura e aberturaDefinida e retorna isso pra própria classe?

DavidUser

Abertura é um método de CandleBuilder este método realiza a sua função de setar o atributo abertura e aberturaDefinida e seguindo o method chaining retorna sua instância por onde o metodo foi chamado (contexto atual do método), possibilitando continuar a configuração da instância.

Já faz muito tempo, mas a primeira vez que vi um Method chaining fiquei meio perdido também, kk, isso pode ajudar:

Criado 26 de fevereiro de 2013
Ultima resposta 27 de fev. de 2013
Respostas 12
Participantes 6