[quote=sergiotaborda][quote=claudioivp]Olá pessoal, bom dia!
estava pesquisando no google sobre uso de set e get e não achei nada que deixasse muito claro
o uso de set e get, no que diz respeito as beans.
Qual a necessidade de usar set e get, ao invés de simplesmente utilizar atributos públicos?
Li algo sobre validação, mas a validação não é feita no controller, antes de instanciar a Bean para definir os valores dos atributos?
Li algo também sobre segurança no acesso, mas as outras classes do projeto teriam q ser zumbis para quebrar
a integridade…
Enfim, muitas dúvidas…hehehe
Por gentileza, postem suas considerações.
Abraços.[/quote]
A primeira coisa a entender é o conceito de Propriedade. Um atributo e uma propriedade não são a mesma coisa.
Normalmente trabalhamos com propriedades e usamos atributos privados para guardar os valores da propriedade. Isto não é uma necessidade ( poderiamos usar um Map, por exemplo) é simplesmente mais prático.
Uma vez entendido o conceito de Propriedade , ha que entender o conceito de conjunto de propriedade (padrão Property Bag) e como um objeto simples pode ser usado como um Property Bag.
O uso de métodos acessores (get) e modificadores (set) da propriedade são um padrão de nomenclatura em java derivado da tecnologia JavaBean. O seu objetivo é criar um contrato para definição da propriedade e encapsular a implementação. Graças a este encapsulamento coisas como o hiberante são possiveis.
Outras linguagens , como C#, têm mecanismos especiais para declarar propriedades. Em java isso não é necessário.
Os métodos modificadores não fazem validação no sentido que vc pensa. Eles fazem consistencia. Portanto, vc tem razão, a validação é feita pelo controler , ou qualquer outro objeto que não o bean. O que o set faz é consistencia. Isto é muito raro na prática.
Em relação à segurança é preciso entender que estamos falando de controle de acesso entendido como visibilidade em java e não a questão de usuários e permissões.
O uso de get/set publico permite que a implementação ( normalmente um atributo, mas não necessáriamente) seja privada. O get/set pode até ser protected em vez de publico mas o atributo sempre tem que ser private (deixar o atributo protected para ser acessado por uma classe filha é um erro de design)
Na prática, os beans de dados java são implementações de PropertyBag e são totalmente burros no sentido de controlar regras.[/quote]
hm cara… vc abordou exatamente o contexto q eu queria…
muito bom!