Setters

eu vi num tópico abaixo sobre isso, mas me pintou muitas dúvidas pois sou iniciante e é a primeira vez que posto num fórum.
Tenho alguma noção sobre OOP e estou tentando entender essa parte de encapsulamento. Pra que ter varios set e get, e outra se eu quiser que só possa ser acessados os dados como leitura eu uso só o get, ou tenho que usar os dois (set e get) e outra quando extamente eu tenho que usar isso, pois vi várias pessoas dizerem que não deve-se usar muito disso!
botei o código do amigo do outro tópico pra vocês me explicarem cada linha.
valeu!!!

[code] //declaraçoes de variaveis
private String nome,cidadeAtual,cidadeDestino;
private double cargaAtual,cargaMaxima;
private static int totalTrem;

//setter and getters 
Trem(){ 
    this.totalTrem = this.totalTrem + 1;    
} 
public static int getTotalDeTrens(){ 
    return Trem.totalTrem; 
} 
//setters da classe Trem 
public void setNome(String nome){ 
    this.nome = nome; 
} 
public String getNome(){ 
    return this.nome; 
} 
public void setLocal(String cidadeAtual){ 
    this.cidadeAtual = cidadeAtual; 
} 
public String getLocal(){ 
    return this.cidadeAtual; 
} 
public void setDestino(String cidadeDestino){ 
    this.cidadeDestino = cidadeDestino; 
} 
public String getDestino(){ 
    return this.cidadeDestino; 
}    

} [/code]

[quote=“john_java”]eu vi num tópico abaixo sobre isso, mas me pintou muitas dúvidas pois sou iniciante e é a primeira vez que posto num fórum.
Tenho alguma noção sobre OOP e estou tentando entender essa parte de encapsulamento. Pra que ter varios set e get, e outra se eu quiser que só possa ser acessados os dados como leitura eu uso só o get, ou tenho que usar os dois (set e get) e outra quando extamente eu tenho que usar isso, pois vi várias pessoas dizerem que não deve-se usar muito disso!
botei o código do amigo do outro tópico pra vocês me explicarem cada linha.
valeu!!!

[code] //declaraçoes de variaveis
private String nome,cidadeAtual,cidadeDestino;
private double cargaAtual,cargaMaxima;
private static int totalTrem;

//setter and getters 
Trem(){ 
    this.totalTrem = this.totalTrem + 1;    
} 
public static int getTotalDeTrens(){ 
    return Trem.totalTrem; 
} 
//setters da classe Trem 
public void setNome(String nome){ 
    this.nome = nome; 
} 
public String getNome(){ 
    return this.nome; 
} 
public void setLocal(String cidadeAtual){ 
    this.cidadeAtual = cidadeAtual; 
} 
public String getLocal(){ 
    return this.cidadeAtual; 
} 
public void setDestino(String cidadeDestino){ 
    this.cidadeDestino = cidadeDestino; 
} 
public String getDestino(){ 
    return this.cidadeDestino; 
}    

} [/code][/quote]

Os métodos de acesso e escrita (get/set) são utilizados para encapsular dados, ou seja, armazenar/obter dados através de métodos…

Com isso os dados são armazenados de forma segura… se você quiser que esses dados sejam visíveis para outras classes, basta utilizar os métodos!

Por exemplo, temos um atributo nome de um objeto pessoa:

[code]private String nome;

// armazena um valor na variável nome
public void setNome(String nome){
this.nome = nome;
}

// obtém o valor da variável nome
public String getNome() {
return this.nome;
}[/code]

:wink:

e ainda complementando nosso colega…preste atenção que quando mexemos com encapsulamento usamos o modo de acesso “private” que da maior segurança para variavel usado na classe.

Neste caso: private String nome;

Assim, o campo “nome” só podera ser alterado nesse classe!!!

Use sempre o get/set é uma otima pratica!!!