Usando acessadores e mutadores em Java

Uma das maneiras pelas quais podemos aplicar encapsulamento de dados é através do uso de acessadores e mutadores. A função dos acessadores e mutadores é retornar e definir os valores do estado de um objeto. Vamos aprender como programar acessadores e mutadores no Java. Como exemplo, usaremos um Classe de pessoa com o estado e o construtor já definidos:

Métodos de acessador

A assessor O método é usado para retornar o valor de um campo particular. Segue um esquema de nomenclatura prefixando a palavra "get" para o início do nome do método. Por exemplo, vamos adicionar métodos de acessador para nome, nome do meio e sobrenome:

Esses métodos sempre retornam o mesmo tipo de dados que seu campo privado correspondente (por exemplo, String) e simplesmente retornam o valor desse campo privado.

Agora podemos acessar seus valores através dos métodos de um objeto Person:

Métodos Mutadores

Um método mutador é usado para definir o valor de um campo privado. Segue um esquema de nomenclatura prefixando a palavra "set" para o início do nome do método. Por exemplo, vamos adicionar campos mutadores para endereço e nome de usuário:

instagram viewer

Esses métodos não têm um tipo de retorno e aceitam um parâmetro que é o mesmo tipo de dados que seu campo privado correspondente. O parâmetro é então usado para definir o valor desse campo privado.

Agora é possível modificar os valores do endereço e nome de usuário dentro do objeto Pessoa:

Por que usar acessadores e mutadores?

É fácil chegar à conclusão de que poderíamos simplesmente alterar os campos particulares da definição de classe para serem públicos e obter os mesmos resultados. É importante lembrar que queremos ocultar os dados do objeto o máximo possível. O Extra amortecedor fornecido por esses métodos nos permite:

  • Altere como os dados são tratados nos bastidores.
  • Imponha a validação nos valores em que os campos estão sendo definidos.

Digamos que decidimos modificar a maneira como armazenamos os nomes do meio. Em vez de apenas uma String, agora podemos usar uma matriz de Strings:

A implementação dentro do objeto mudou, mas o mundo externo não é afetado. A maneira como os métodos são chamados permanece exatamente a mesma:

Ou, digamos que o aplicativo que está usando o objeto Person possa aceitar apenas nomes de usuário com no máximo dez caracteres. Podemos adicionar a validação no mutator setUsername para garantir que o nome de usuário esteja em conformidade com este requisito:

Agora, se o nome de usuário passado para o mutador setUsername tiver mais de dez caracteres, ele será truncado automaticamente.

instagram story viewer