Usando construtores

8 respostas
T

Criei um construtor q chama os metodos ‘set’!
É importante sempre ter um construtor, não fica legal um construtor q chama metodos???

public class ItemNota {

private String tipo;

private String descricao;

private int quantidadeItem;

private double preco;
ItemNota(String tp, String dc, int qt, double pc) {

setTipo(tp);

setDescricao(dc);

setQuantidadeItem(qt);

setPreco(pc);

}
void setTipo(String t) {		
}
	
void setDescricao(String d) {		
}
	
void setQuantidadeItem(int qtd) {		
}	

void setPreco(double preco) {		
}

} :?: :?:

8 Respostas

diego2005

Acho que no construtor você já poderia inicializar as variáveis diretamente:

public class ItemNota { 
   private String tipo; 
   private String descricao; 
   private int quantidadeItem; 
   private double preco; 

   ItemNota(String tp, String dc, int qt, double pc) { 
       tipo = tp 
       descricao = dc; 
       quantidadeItem = qt; 
       preco = pc; 
   } 

   void setTipo(String t) { 
       tipo = t;
   } 

   void setDescricao(String d) { 
       descricao = d;
   } 

   void setQuantidadeItem(int qtd) { 
       quantidadeItem = qtd
   } 

   void setPreco(double p) { 
       preco = p;
   } 

}

Ah...só uma dica, quando postar código coloque as tags...t+

ItaloE

Sim, fica legal…pois vc ja consegue preparar seu objeto no construtor :smiley:

Alias acho que é muito usado…

Mas seu construtor tem que ser public :wink:

Dieval_Guizelini

Vou complementar o comentário do Diego,

conforme o padrão JavaBeans, você deveria ter também um contrutor sem parâmetros, e além do construtor ser público os métodos get e set também devem ter seu nível de acesso estabelecido, baseado na seguinte regra:

Modificador de acesso - restrição
public - todos acessam
protected - O recurso é acessado pela classe, pelas classes do mesmo package e pelas subclasses.
não especificado (o seu caso), o acesso é permitido apenas para a classe e para as classes da mesma package, não sendo permitido para as subclasses e para as demais classes do sistema.
private - o mais restretivo, permite o acesso ao recurso apenas para os objetos da classe.

Aqui recurso pode ser o método ou propriedade.

veja o link:
http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html

Outro aspecto importante é com relação o uso ou não da chamada dos métodos set.

Se você fizer o uso das chamadas de método, em caso de ter que fazer alguma pré-checagem antes de aceitar o valor, não terá que refatorar o seu código, caso contrário será necessário.

Valeu.
:wink:

T

Dieval Guizelini:
Vou complementar o comentário do Diego,

conforme o padrão JavaBeans, você deveria ter também um contrutor sem parâmetros, e além do construtor ser público os métodos get e set também devem ter seu nível de acesso estabelecido, baseado na seguinte regra:

Modificador de acesso - restrição
public - todos acessam
protected - O recurso é acessado pela classe, pelas classes do mesmo package e pelas subclasses.
não especificado (o seu caso), o acesso é permitido apenas para a classe e para as classes da mesma package, não sendo permitido para as subclasses e para as demais classes do sistema.
private - o mais restretivo, permite o acesso ao recurso apenas para os objetos da classe.

Aqui recurso pode ser o método ou propriedade.

veja o link:
http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html

Outro aspecto importante é com relação o uso ou não da chamada dos métodos set.

Se você fizer o uso das chamadas de método, em caso de ter que fazer alguma pré-checagem antes de aceitar o valor, não terá que refatorar o seu código, caso contrário será necessário.

Valeu.
:wink:

Vlw pessoal, agora deu pra entender melhor essa situaçao!!!
Obrigado :stuck_out_tongue:

Link_pg

Você também pode fazer um método que inicializa todas as variáveis por exemplo

public class Exemplo{
     private String var1;
     private String var2;
     
     public Exemplo(String var1, String var2){
          iniciaVariaveis(var1, var2);
     }

     private void iniciaVariaveis(String var1, String var2){
          this.var1 = var1;
          this.var2 = var2;
     }
}

Espero ter ajudado!!
Flww!!

Calvin

Olá,

Diego, na minha opinião isso não é verdade, pois e se tivesse alguma validação ou regra de formatação, por exemplo, dentro de algum setAlgumaCoisa?! Acredito que se os métodos getters e setters existem na sua classe, eles devem ser sempre utilizados para se referenciar aos atributos da classe independente de onde os mesmos estão sendo acessados.

E mais uma opinião:
Ter um construtor que inicializa sua classe não é uma maneira de desenvolvimento elegante, esses tipos de contrutores são criados somente para economia de código e para suprir nossa preguiça! :wink:

Bom dia a todos!

LPJava

vc pode ter um construtor que nao chama nenhum metodos, nao existe uma para isso… desde os conhecimentos que tenho, vc pode ou nao ter construtores depende da sua aplicação!!

T

É já vi q depende da aplicação.
Vlw pessoal, assim as coisas ficam mais claras.
Obrigado.

Criado 24 de setembro de 2006
Ultima resposta 24 de set. de 2006
Respostas 8
Participantes 7