Olá Gilnei, tudo bem?
Sim, sendo bem específico, os métodos GETTER e SETTER são usados para controlar como valores são atribuídos às PROPRIEDADES de um objeto. Quando deixamos as propriedades de um objeto livre para acesso, não temos como impedir a entrada de
uma informação inválida nessas propriedades e com esses "métodos de acesso", passamos a ter esse controle.
Você mencionou o uso de funções (ou métodos) para controlar a entrada de valores no objeto, e na realidade, isso vai ao encontro da ideia sugerida pelos GETTERS e SETTERS. A diferença é no propósito. Quando imaginamos um método qualquer, estamos pensando numa função associada a um objeto que tem por objetivo realizar alguma operação relacionada a esse objeto: um cálculo, o acesso a uma informação externa, o processamento de algum dado, uma validação qualquer, etc. Exemplo: calcularResultado()
, carregarDadosCep(cep)
, validarID(id)
. Ou seja, além de receber um dado qualquer (quando tiver parâmetros), esse método tem um propósito específico e um conjunto de instruções para realizar tal operação (seja ela qual for).
Já os GETTERS e SETTERS existem ÚNICA E EXCLUSIVAMENTE para determinar como determinados valores serão repassados/atribuídos às suas respectivas propriedades no objeto. SÓ ISSO! GETTERS e SETTERS não fazem outro tipo de operação que não seja essa: o controle da atribuição de valores a propriedades do objeto. Ex: um SETTER como setCep(cep)
teria um código para determinar se o valor do parâmetro cep
é um CEP válido ou ao menos se está no formado correto, que seria 00000-000 antes de atribuir a uma propriedade cep
existente no objeto. Ou seja, ela garantiria que ao executarmos o GETTER getCep()
(para retornar a informação do CEP guardada no objeto), o dado retornado seria um CEP mesmo e não um dado completamente aleatório como "Jhonatan" ou "Torta" ou "true". Entende? Reforçando, eles servem para garantir que a entrada e saída de dados associados a propriedades de um objeto estejam no formato correto e esperado, e caso um dado inválido seja fornecido para o SETTER ele valide essa entrada e notifique a aplicação (gerando um erro ou mensagem de alerta) para sabermos que o dado que está sendo fornecido não atende aos critérios exigidos.
Se seu objeto não possui propriedades (apenas métodos) ou seja, só executa ações, passar as informações necessárias via parâmetro já resolveria e não precisaríamos disso. Agora, se ele possui propriedades e os dados inseridos nessas propriedades precisam de alguma forma de tratamento e validação, quem garantirá a integridade das informações guardadas nessas propriedades são os GETTERS e SETTERS.
Espero que a explicação tenha ficado clara e que a dúvida tenha sido sanada, caso contrário é só responder o tópico que continuamos a conversa.
Att.