Para que serve esta classe com tantos set e get?

Qual o objetivo de implementar tantos set (atribuir) e get (pegar) em uma única classe?

[code]public class Estoque
{
private int idEstoque;
private String produto;
private double preco;

public void setIdEstoque(int idEstoque)
{ this.idEstoque = idEstoque;}

public void setProduto(String produto)
{ this.produto = produto;}

public void setPreco(double preco)
{ this.preco = preco;}


public int getIdEstoque()
{ return this.idEstoque;}

public String getProduto()
{ return this.produto;}

public double getpreco;
{ return this.preco;}

}[/code]

Um get e set para cada atributo. Normalmente é isso mesmo. Pode variar, dependendo da situação.

Também é importante caso um dia, por exemplo, você não aceite mais preços menores que 2 reais, basta alterar o set.

 public void setPreco(double preco)  
       if(preco>2)
    { this.preco = preco;}  

[quote=Galego Henrique]Qual o objetivo de implementar tantos set (atribuir) e get (pegar) em uma única classe?

[code]public class Estoque
{
private int idEstoque;
private String produto;
private double preco;

public void setIdEstoque(int idEstoque)
{ this.idEstoque = idEstoque;}

public void setProduto(String produto)
{ this.produto = produto;}

public void setPreco(double preco)
{ this.preco = preco;}


public int getIdEstoque()
{ return this.idEstoque;}

public String getProduto()
{ return this.produto;}

public double getpreco;
{ return this.preco;}

}[/code][/quote]

Até aonde eu sei, getter e setter para tudo quanto é coisa é uma má pratica de programação (http://blog.caelum.com.br/nao-aprender-oo-getters-e-setters/).

Cara, cada um dos set e get estão referenciando que cada atributo private que você declarou.
Sem eles, você não terá acesso a eles.

Usando o seu exemplo:

[code]public class Estoque
{
private int idEstoque;
private String produto;
private double preco;

    public void setIdEstoque(int idEstoque)  
    { this.idEstoque = idEstoque;}  
      
    public void setProduto(String produto)  
    { this.produto = produto;}  
      
    public void setPreco(double preco)  
    { this.preco = preco;}  
      
      
    public int getIdEstoque()  
    { return this.idEstoque;}  
      
 //Tirei o set e o get do preco;
 //   se você tentar fazer algo do Tipo
//    Estoque e = new Estoque();
 //   e.setPreco(100.);

//Isso irá gerar um erro pois o preço não possui o set.

}  [/code]

Espero ter ajudado.

Oi, amigo, pesquise sobre Java bean. É a resposta para sua dúvida, está classe representa um bean.

[quote=raphael.ricci]Cara, cada um dos set e get estão referenciando que cada atributo private que você declarou.
Sem eles, você não terá acesso a eles.

Usando o seu exemplo:

public class Estoque    
    {    
        private int idEstoque;    
        private String produto;    
        private double preco;    
            
        public void setIdEstoque(int idEstoque)    
        { this.idEstoque = idEstoque;}    
            
        public void setProduto(String produto)    
        { this.produto = produto;}    
            
        public void setPreco(double preco)    
        { this.preco = preco;}    
            
            
        public int getIdEstoque()    
        { return this.idEstoque;}    
            
     //Tirei o set e o get do preco;  
     //   se você tentar fazer algo do Tipo  
    //    Estoque e = new Estoque();  
     //   e.setPreco(100.);  
         
  //Isso irá gerar um erro pois o preço não possui o set.  
  
    }    

Espero ter ajudado.[/quote]
Não gera nenhum erro,
porém o atributo fica inacessível para qualquer classe que não seja a própria classe Estoque, pelo menos do jeito que ela está agora.

Estou meio confuso ainda, mas pelo que já consegui captar aqui, é que através dos “gets” e “sets” eu implemento encapsulamento, ou seja, é para acessar, atributos encapsulados? Ou é outra coisa?

Isso, é isso mesmo… rs

Isso, é isso mesmo… rs[/quote]

Agora entendi perfeitamente, valeu cara. Obrigado a todos vocês pessoal!

Essa mistura de Getters e Setters (get e set);
É uma variavel encapsulada de uma classe que serve para receber valores ou para mostrar valores.

Encapsulamento nada mais é do que atribuir esses metodos get e set em uma variavel (atributo aqui).

O método set -> serve para alterar o valor dessa variavel;
O método get -> serve para mostrar esse valor (get de pegar “pega o valor”);

Resumindo -> encapsular serve para uma variavel receber ou mostrar um valor;
=]

[quote=charleston10]Essa mistura de Getters e Setters (get e set);
É uma variavel encapsulada de uma classe que serve para receber valores ou para mostrar valores.

Encapsulamento nada mais é do que atribuir esses metodos get e set em uma variavel (atributo aqui).

O método set -> serve para alterar o valor dessa variavel;
O método get -> serve para mostrar esse valor (get de pegar “pega o valor”);

Resumindo -> encapsular serve para uma variavel receber ou mostrar um valor;
=]
[/quote]

Opa… muita calma nessa hora hehehe…

Encapsulamento serve pra você ocultar algo, de alguém que não precisa saber o que acontece interiormente.

O exemplo de getters e setters é pra encapsular a atribuição/recuperação dos dados, de maneira tal que quando uma classe externa invoca um método get(), não sabe como ele é implementado, e por isso essa implementação pode mudar sem afetar quem invoca o método.

outras coisas podem ser encapsuladas, como sua regra de negócio.

Tem um post muito bacana do ViniGodoy nesse tópico, falando justamente sobre isso, vai descendo que você encontra :slight_smile: É uma leitura que vale a pena.

Sim, expliquei de maneira bem leiga;

Mas que a lógica não altera os fatos.
=]

Obrigado pela correção digaoneves. Quando usei a palavra erro eu queria me referenciar a isso. :wink:

Usando outro exemplo… Isso aqui faz a mesma coisa, basicamente? Pois foi assim que aprendi vagamente, e quando peguei o código que citei anteriormente passei apuros.

[code]class vendas
{
public String cliente;
public String preco;

public String permite_acesso1 (String x)
{ 
	cliente = x;
	return valor;
}

    public String permite_acesso2 (String y)
    {
            preco = y;
            return preco;
    }

}[/code]

da uma olhadinha aqui dps tb

abrasss

[quote=Galego Henrique]Usando outro exemplo… Isso aqui faz a mesma coisa, basicamente? Pois foi assim que aprendi vagamente, e quando peguei o código que citei anteriormente passei apuros.

[code]class vendas
{
public String cliente;
public String preco;

public String permite_acesso1 (String x)
{ 
	cliente = x;
	return valor;
}

    public String permite_acesso2 (String y)
    {
            preco = y;
            return preco;
    }

}[/code][/quote]
Cara isso é equivalente ao set. Mas, se você olhar o código o return do primeiro método esta incorreto, o certo seria retornar cliente.
nesse link http://www.guj.com.br/java/101184-duvidas-como-utilizar-o-metodo-set-e-get o berg.pb dá um exemplo legal para isso.

[quote=digaoneves][quote=charleston10]Essa mistura de Getters e Setters (get e set);
É uma variavel encapsulada de uma classe que serve para receber valores ou para mostrar valores.

Encapsulamento nada mais é do que atribuir esses metodos get e set em uma variavel (atributo aqui).

O método set -> serve para alterar o valor dessa variavel;
O método get -> serve para mostrar esse valor (get de pegar “pega o valor”);

Resumindo -> encapsular serve para uma variavel receber ou mostrar um valor;
=]
[/quote]

Opa… muita calma nessa hora hehehe…

Encapsulamento serve pra você ocultar algo, de alguém que não precisa saber o que acontece interiormente.

O exemplo de getters e setters é pra encapsular a atribuição/recuperação dos dados, de maneira tal que quando uma classe externa invoca um método get(), não sabe como ele é implementado, e por isso essa implementação pode mudar sem afetar quem invoca o método.

outras coisas podem ser encapsuladas, como sua regra de negócio.

Tem um post muito bacana do ViniGodoy nesse tópico, falando justamente sobre isso, vai descendo que você encontra :slight_smile: É uma leitura que vale a pena.[/quote]

o use a cabeça padrões de projetos tem uma parte que brinca, ja encapsulamos isso, aquilo, aquilo outro, agora vamos encapsular xxx…

[quote=raphael.ricci]

[quote=Galego Henrique]Usando outro exemplo… Isso aqui faz a mesma coisa, basicamente? Pois foi assim que aprendi vagamente, e quando peguei o código que citei anteriormente passei apuros.

[code]class vendas
{
public String cliente;
public String preco;

public String permite_acesso1 (String x)
{ 
	cliente = x;
	return valor;
}

    public String permite_acesso2 (String y)
    {
            preco = y;
            return preco;
    }

}[/code][/quote]
Cara isso é equivalente ao set. Mas, se você olhar o código o return do primeiro método esta incorreto, o certo seria retornar cliente.
nesse link http://www.guj.com.br/java/101184-duvidas-como-utilizar-o-metodo-set-e-get o berg.pb dá um exemplo legal para isso.[/quote]

É mesmo, foi um descuido.