To fazendo um programa pra estudar o padrão de projeto DAO…
nesse programa tem uma class CadastroClienteGraf que é a parte visual(swing e awt), ClienteDAO q tem métodos de conexão com o banco de dados e ClienteJavaBean que tem as minhas variáveis com os seus métodos get e set.
As variáveis dentro de ClienteJavaBean deixei todas privadas e os métodos get e set públicos
ClienteDAO só tem métodos e eles são públicos tb.
Na classe CadastroClienteGraf até o momento está com as variáveis privadas e os métodos públicos… no entanto apresenta alguns erros dizendo que os métodos e variáveis precisam ser static nessa class para ficar visível ao ClienteJavaBean
-> As variáveis e métodos da classe CadastroClienteGraf são JTextField, JComboBox e etc.
Devo deixá-las staticas?
É a melhor forma?
Quando devo deixar static, public ou privado?
private = vc só tem acesso dentro da mesma classe
public = vc tem acesso ao a qualquer lugar do sistema
static não tem nada haver com private e public , é quando o atributo(variavel) é da classe e não do objeto em si
exemplo
quando vc tem um metodo statico vc pode acessar pelo noma da classe Classe.metodoStatico…
A
Abner_David_da_Silva
Entendi! Mas uma dúvida ficou.
Antes eu tava criando uma estancia da class para invocar um metodo.
Por exemplo… CadastroClienteGraf cadCliGrf = new CadastroClienteGraf(); … cadCliGrf.getJTextFieldNome().getText();
Qual é a diferença de fazer isso… com chamar Classe.metodoStatico?
Tens prols e contras?
Tenho que ficar atento com alguma coisa pra fazer isso?
ViniGodoy
Não use static porque:
Seu static teria que ser público, o que torna ele uma variável global. Elas tendem a tornar o programa instável, já que com o tempo vc esquece de onde são usadas.
Não é uma solução encapsulada. A classe que controla o JTextField pode fazer verificações, coisas static não são verificadas;
Variáveis static jamais são coletadas da memória, a menos que vc explicitamente set elas como null. Isso cria altas chances de memory leaks no seu programa;
Variáveis static podem deixar uma implementação completamente hostil contra multi-threading. Nem com sincronização resolveria o problema.
A
Abner_David_da_Silva
Entendi! então acho q é melhor criar a instancia da class msm =]
vlw!
WellingtonRamos
Sem ver exatamente o que você fez, é pouco provável que possamos ajudá-lo, mas, julgo que, pela mensagem, você está fazendo algo como:
Ao invés de obter a instância existente de CadastroClienteGraf.