Get e set

Boas pessoal !

Estou com uma pequena duvida !
Tenho uma classe que tem os objectos com os metodos get e sets respectivamente !

.....
    private String nome;
    private String telefone;
    private String foto;
   
    public dadosUtente() {
    }
    
      public dadosUtente( String nome, String telefone, String foto){
          
        super();
        
        this.nome = nome;
        this.telefone = telefone;
        this.foto = foto;

    }
..... Baixo os metodos get e set de cada um ! 

Tenho uma class que faz set em cada um destes objectos conforme dados introduzidos :


......

dadosUtente du = new dadosUtente();
du.setNome(rs.getString(1));
du.settelefone(rs.getString(2));
du.setfoto(rs.getString(3));

E tenho uma terceira class que tenta apanha o valor dos dados de utente usando os metodos get :

dadosUtente du = new dadosUtente();

String nome = du.getNome();
String telefone = du.getNome();
String foto = du.getNome();

System. out.println("Nome : " + nome);
System. out.println("Telefone : " + telefone);
System. out.println("Foto : " + foto);

......

O problema é que eu obtenho o resultado :

Nome : null
telefone : null
foto : null

parecendo que eu nao setei nada !
o que será que tal mal na minha logica ?

Obrigado !

E realmete você não setou (setXXX()) nada! Observe o seu último código:

[code]dadosUtente du = new dadosUtente();

String nome = du.getNome();
String telefone = du.getNome();
String foto = du.getNome();

System. out.println("Nome : " + nome);
System. out.println("Telefone : " + telefone);
System. out.println("Foto : " + foto);[/code]

Você criou o objeto du e já tá fazendo os gets, onde estão os sets???

T+

Mas voce REALMENTE não setou nada…

No seu ultimo codigo ali, voce cria o objeto na linha 1, nao seta nada nele… e depois da um get na linha 3…
Vai vir null sempre assim.

Att.,

dadosUtente du = new dadosUtente();

String nome = du.getNome();
String telefone = du.getNome();
String foto = du.getNome();

System. out.println("Nome : " + nome);
System. out.println("Telefone : " + telefone);
System. out.println("Foto : " + foto);

......

Estás a criar o objecto nesta altura, as propriedades vão ser sempre null…

No primeiro codigo, vc deveria ter utilizado o 2 construtor do objeto acrescentando as informacoes do parametro.

A minha ideia é utilizar uma class para fazer os sets e outra para apanhar os valores setados !

Seria como ter os dados setados disponiveis para qualquer class usar !

Eu nao setei na terceira class, mas fiz na segunda ! o objectivo é apanhar os dados setados na segunda class!

nao sei se me fiz entender !

Alguem sabe como posso ter isso ?

Use um singleton… Mas ai voce pode ter problemas de concorrência na sua aplicação.

Att.,

O objectivo não deve ser ter singleton. Posta o código todo.

Os dados setados na class 2 precisam estar disponiveis para todas as classes do projecto !

De formas a que sempre que eu precisar de utilizar um dos dados eu possa recorrer aquela class!

Como posso fazer isso ? pode me dar um exemplo ou adptar o modelo das minhas classs acima ?

Obrigado !

Provavelmente devias passar o objecto como parametro para os métodos da outra classe onde precisas.

Class que tem os metodos set e get :

public class dadosUtente {
    
    private String id;
    public String nome;
    private int datanasc;
    private String pai;
    private String mae;
    private String naturalidade;
    private String bi;
    private String organismo;
    private String area;
    private String categoria;
    private String nif;
    private String iban;
    private String email;
    private String telefone;
    private String foto;
    
    

    
       
    public dadosUtente() {
    }
    
      public dadosUtente(String id, String nome, int datanasc, String pai, String mae,
            String naturalidade, String bi, String organismo, String area, String categoria, String nif, String iban,
            String email, String telefone, String foto){
          
        super();
        this.id = id;
        this.nome = nome;
        this.datanasc = datanasc;
        this.pai = pai;
        this.mae = mae;
        this.naturalidade = naturalidade;
        this.bi = bi;
        this.organismo = organismo;
        this.area = area;
        this.categoria = categoria;
        this.nif =nif;
        this.iban = iban;
        this.email = email;
        this.telefone = telefone;
        this.foto = foto;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

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

    public int getDatanasc() {
        return datanasc;
    }

    public void setDatanasc(int datanasc) {
        this.datanasc = datanasc;
    }

    public String getPai() {
        return pai;
    }

    public void setPai(String pai) {
        this.pai = pai;
    }

    public String getMae() {
        return mae;
    }

    public void setMae(String mae) {
        this.mae = mae;
    }

    public String getNaturalidade() {
        return naturalidade;
    }

    public void setNaturalidade(String naturalidade) {
        this.naturalidade = naturalidade;
    }

    public String getBi() {
        return bi;
    }

    public void setBi(String bi) {
        this.bi = bi;
    }

    public String getOrganismo() {
        return organismo;
    }

    public void setOrganismo(String organismo) {
        this.organismo = organismo;
    }

    public String getArea() {
        return area;
    }

    public void setArea(String area) {
        this.area = area;
    }

    public String getCategoria() {
        return categoria;
    }

    public void setCategoria(String categoria) {
        this.categoria = categoria;
    }

    public String getNif() {
        return nif;
    }

    public void setNif(String nif) {
        this.nif = nif;
    }

    public String getIban() {
        return iban;
    }

    public void setIban(String iban) {
        this.iban = iban;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getFoto() {
        return foto;
    }

    public void setFoto(String foto) {
        this.foto = foto;
    }
    
    
    
}

Classe que tem um metodo que conecta ao banco de dados e seta os valores recebidos na classe dadosUtente :


dadosUtente du = new dadosUtente();

            if ( resultSet.asNext()){


                du.setNome(rs.getString(1));                               
                du.setNome(rs.getString(2));
                du.setDatanasc(rs.getInt(3));
                du.setPai(rs.getString(4));
                du.setMae(rs.getString(5));
                du.setNaturalidade(rs.getString(6));
                du.setBi(rs.getString(7));
                du.setOrganismo(rs.getString(8));
                du.setArea(rs.getString(9));
                du.setCategoria(rs.getString(10));
                du.setNif(rs.getString(11));
                du.setIban(rs.getString(12));
                du.setEmail(rs.getString(13));
                du.setTelefone(rs.getString(14));
                du.setFoto(rs.getString(15));

}

System.out.println("Meu nome é : "+du.getNome());  // QUANDO IMPRIMO AQUI CORRE TUDO BEM ! ELE PRINTA O NOME DO UTENTE ! 

.......

depois tenho uma simples class que apenas tenta apanhar os dados setados para os imprimir :

public class imprimirDadosUtente();

......
 dadosUtente du = new dadosUtente();  
   
 String nome = du.getNome();  
 String telefone = du.getNome();  
 String foto = du.getNome();  
   
 System. out.println("Nome : " + nome);  
 System. out.println("Telefone : " + telefone);  
 System. out.println("Foto : " + foto);
......

Como assim, voce pode me dr um exeplo simples adaptado as minhas classes ?

Obrigado !

Nesse momento…


dadosUtente du = new dadosUtente();     

vc está criando o atributo du o objeto dadosUtente() onde esse construtor nada faz. Depois vc já quer sair capturando informações do atributo recém criado:


String nome = du.getNome();   
String telefone = du.getNome();   
String foto = du.getNome();   
  
System. out.println("Nome : " + nome);   
System. out.println("Telefone : " + telefone);   
System. out.println("Foto : " + foto);   

Eu não sei se entendi a sua dúvida, mas pra mim tá claro sobre o porque ele está retornando NULL para os atributos.

Bispo.

Sim eu ja percebi aonde ta o meu erro ! estou a tentar ver forma de o solucionar ! ou seja , capturar os dados setados na class anterior.

Nao tem como fazer isso ? seria algo como variaveis glovais que podem ser alterados apartir de um lugar ( class ) e que podem ser utilizadas por outras classes !

[quote=LuisClaudio]Sim eu ja percebi aonde ta o meu erro ! estou a tentar ver forma de o solucionar ! ou seja , capturar os dados setados na class anterior.

Nao tem como fazer isso ? seria algo como variaveis glovais que podem ser alterados apartir de um lugar ( class ) e que podem ser utilizadas por outras classes !
[/quote]

Ixi, esqueça esse negócio de variáveis globais…

O que você pode fazer é disponibilizar um objeto dadosUtente na sua classe do meio (vide primeiro post seu, onde vc não colocou o nome dessa classe) e na sua terceira classe, você obteria esse objeto e faria a impressão…

Não sei se fui claro…rssrsr

T+

O conteúdo de um objeto deve ser acessado por ele mesmo.

Não é boa prática passar esse monte de parâmetros nos construtores, todos esses valores são obrigatórios?

Leia mais osbre orientacão à objetos e boas práticas, pode te ajudar bastante.

[]s

nem por isso ! voce pode postar aqui qualquer coisa para testarmos ?

Obrigado !

Ou voce passa o objeto setado em todo lugar ou então usa o padrão Singleton ou ainda pode deixar todos os valores estaticos.