Ir ao conteúdo
  • Cadastre-se

Metodos acessores gets e sets


Posts recomendados

Olá pessoal tudo bem? Bom..Eu tenho uma duvida sobre estes métodos, pois assim...Quais são os benefícios dos Gets e Sets? pelo que li é segurança mas se nomeamos atributos privados e usamos esses métodos assessores para manipula-los fora da classe, qual é a segurança que estamos tendo? já que de qualquer forma estaríamos mexendo no atributo em si só que por meio do método...Por exemplo:

 

private String nome;

 

  public void setNome (String n) {

  this.nome = n;

  }

 

  public String getNome () {

   return this.nome;

  }

 

 

 

 

De qualquer modo chamando o método nós estaríamos modificando o atributo, então qual é a vantagem dos gets e sets? já que se usarmos um "this.nome = "x" " Resulta no mesmo do que um this.setNome("x") pois estaríamos modificando da mesma forma o atributo...Por que usar gets e sets?

Link para o comentário
Compartilhar em outros sites

Isto é um dos conceitos de POO: Encapsulamento.

 

O principal objetivo não é segurança, mas sim a separação dos conceitos de atributos e comportamentos de um objeto.

 

São diversos benefícios, mas também representa algum inconveniente adicional, o importante é não considerar este inconveniente como um problema, mas sim um caminho a ser seguido para um bom desenho de classes.

 

Para exemplificar, vamos pegar a sua questão:

- qual a diferença entre obj.nome = "x" e obj.setNome("x")?

No primeiro caso você está manipulando um atributo de um objeto, enquanto no segundo você está utilizando um comportamento definido do objeto. O conceito de encapsulamento define que você não precisa conhecer os atributos de um objeto, você precisa apenas utilizar seus comportamentos. Então imagine que seu objeto possua 2 atributos para a definição de nome: "primeiroNome" e "sobrenome", não é sua responsabilidade conhecer ou controlar isto, você apenas precisa conhecer o comportamento de definir nome: "obj.setNome(nome)", o resto é responsabilidade do próprio objeto.

 

É claro, não leve o exemplo ao pé da letra, existem situações e situações. Eu também utilizei "obj." ao invés de "this." pois o this representa o próprio objeto, o que foge do conceito de encapsulamento.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...
Em 09/09/2016 às 12:39, Cweiler disse:

Isto é um dos conceitos de POO: Encapsulamento.

 

O principal objetivo não é segurança, mas sim a separação dos conceitos de atributos e comportamentos de um objeto.

 

São diversos benefícios, mas também representa algum inconveniente adicional, o importante é não considerar este inconveniente como um problema, mas sim um caminho a ser seguido para um bom desenho de classes.

 

Para exemplificar, vamos pegar a sua questão:

- qual a diferença entre obj.nome = "x" e obj.setNome("x")?

No primeiro caso você está manipulando um atributo de um objeto, enquanto no segundo você está utilizando um comportamento definido do objeto. O conceito de encapsulamento define que você não precisa conhecer os atributos de um objeto, você precisa apenas utilizar seus comportamentos. Então imagine que seu objeto possua 2 atributos para a definição de nome: "primeiroNome" e "sobrenome", não é sua responsabilidade conhecer ou controlar isto, você apenas precisa conhecer o comportamento de definir nome: "obj.setNome(nome)", o resto é responsabilidade do próprio objeto.

 

É claro, não leve o exemplo ao pé da letra, existem situações e situações. Eu também utilizei "obj." ao invés de "this." pois o this representa o próprio objeto, o que foge do conceito de encapsulamento.

 

 

 

Muito obrigado pela explicação, me ajudou muito !!!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...