Para que serve esta classe com tantos set e get?

17 respostas
Galego_Henrique

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

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;}
}

17 Respostas

ErickRAR

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;}
S
Galego Henrique:
Qual o objetivo de implementar tantos set (atribuir) e get (pegar) em uma única classe?
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;}
}

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/).

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.

linngallo

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

Rodrigo_Sasaki

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.


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.

Galego_Henrique

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?

linngallo

Isso, é isso mesmo… rs

Galego_Henrique

Isso, é isso mesmo… rs

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

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;
=]

Rodrigo_Sasaki

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;
=]

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.

charleston10

Sim, expliquei de maneira bem leiga;

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

raphael.ricci

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

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.

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;
        }


}
renanreismartins

da uma olhadinha aqui dps tb

abrasss

raphael.ricci
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.
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;
        }


}
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 [url]http://www.guj.com.br/java/101184-duvidas-como-utilizar-o-metodo-set-e-get[/url] o berg.pb dá um exemplo legal para isso.
maior_abandonado

digaoneves:
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;
=]

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.

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

Galego_Henrique
raphael.ricci:
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.
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;
        }


}
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 [url]http://www.guj.com.br/java/101184-duvidas-como-utilizar-o-metodo-set-e-get[/url] o berg.pb dá um exemplo legal para isso.

É mesmo, foi um descuido.

Criado 21 de junho de 2012
Ultima resposta 21 de jun. de 2012
Respostas 17
Participantes 9