Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Dúvida sobre bom uso de encapsulamento

Boa noite.

Na Aula 01, em uma das questões foi dito que:

"A propriedade Saldo pode ser manipulado por outras classes. Isso vai contra a regra do encapsulamento. De nada adianta criar propriedades (ter get E set ) e permitir que todos os atributos sejam modificados pelas outras classes."

Por favor, me digam se entendi direito:

"Não estamos utilizando encapsulamento corretamente ao declaramos uma propriedade do tipo public double Saldo {get;set;}. Pois se queremos que ele seja totalmente manipulado, não tem sentido utilizamos uma propriedade. Basta public double saldo;. Isso é correto afirmar ?"

5 respostas

Oi Lucas, infelizmente não :(. O melhor era que tivesse privado, para que apenas a instancia da Conta pudesse mexer.

Obrigado pela resposta, Alberto.

Posso afirmar que em relação a acessibilidade:

public double Saldo {get;set;} = public double saldo ??

Na minha opinião, sim. A diferença é que através da propriedade, você, posteriormente, modificar a forma como você acessa tal propriedade.

Bem, Alberto ... o que pude concluir então é que utilizar algo como public double Saldo {get;set;} significa não utilizar adequadamente os conceitos de encapsulamento e propriedade.

Sendo assim, por que continuamos utilizando propriedades dessa forma ? Digo isso com base nos exercícios da Aula 01 e também em Frameworks como o EF que mapeiam as classes sempre com {get;set;}

solução!

Usar o public com o get e set é a convenção do c#. E é como eu falei, a pessoa não está acessando o atributo direto e sim o método de acesso. Então é para usar desse jeito sim.

Em relação ao saldo, a falha do encapsulamento tem a ver com o fato de você manipular ele sem passar pelo método que saca ou deposita. Nesse caso, o atributo deveria ser só privado sem nenhum mudado que modifique ele, a não ser que sejam os métodos de negócio como saca, deposita etc.