Property no Delphi - Quando usar?
21/06/2013
0
Estou estudando POO no Delphi e agora estou na parte de Property. Beleza, entendi que é uma propriedade para "encapsular" (ainda não entendi bem) um atributo privado. Mas qual é a diferença entre usar Property e usar um atributo público? Quando usar cada um?
Muito obrigada =)
Carla Batista
Post mais votado
21/06/2013
Suponha que você tenha uma classe Pessoa e uma regra que diz que uma pessoa não pode ser cadastrada sem CPF.
Se você tiver apenas um atributo público CPF, você poderá muito bem atribuir uma string vazia a ele em qualquer parte do programa. Como garantir que essa string vazia não será aceita? Terá de fazer uma verificação em toda parte do sistema onde se atribui valor a este atributo. Já viu o trabalho, né?
Por outro lado, se você tiver um atributo privado e uma propriedade que o encapsula, você poderá tratar essa atribuição de valores no método set dessa propriedade. Assim, sempre que se tentasse atribuir um valor vazio à propriedade CPF, o método setCPF seria chamado e nele você faria a verificação, permitindo ou não a atribuição do valor. Perceba que dessa forma você terá a verificação uma única vez e poderá executar outras validações no método set, pois ele sempre será chamado quando você tentar preencher a propriedade CPF.
Deu pra entender a ideia?
Joel Rodrigues
Mais Posts
21/06/2013
Carla Batista
1) Com property
TGrupo = class private _codigo : Integer; _descricao : String; procedure setCodigo(valor:Integer); procedure setDescricao(valor:string); public property Codigo : Integer read _codigo write setCodigo; property Descricao : String read _descricao write setDescricao; end; ...
2) Com atributo público
TCategoria = class public Codigo : Integer; Descricao : String; end;
21/06/2013
Joel Rodrigues
Utilizando um atributo público você não tem o real encapsulamento. Então, vocêquer seguir as boas práticas da POO, use propriedades. Se quer fazer algo rápido, onde não necessita de tanta organização, pode usar os atributos públicos.
21/06/2013
Carla Batista
Utilizando um atributo público você não tem o real encapsulamento. Então, vocêquer seguir as boas práticas da POO, use propriedades. Se quer fazer algo rápido, onde não necessita de tanta organização, pode usar os atributos públicos.
Oii, obrigada pela ajuda.
Mas tem alguma diferença prática nisso? Por que até agora só está me parecendo ser mais código com mesma função.
Obigada.
21/06/2013
Carla Batista
Acho que depende da situação, mas o mais correto e seguro parece ser encapsular (seria isso?) os atributos, pois temos maior controle sobre o que entra neles. É isso, né?
21/06/2013
Joel Rodrigues
Continue estudando POO, pois são vários os benefícios que ela nos garante.
Bons estudos.
21/06/2013
Joel Rodrigues
Bons estudos e até mais.
Estou Concluindo o tópico.
Clique aqui para fazer login e interagir na Comunidade :)