Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problema em alterar o saldo diretamente

Olá, Pode explicar qual é o problema em se poder alterar o saldo directamente através do atributo? Sei que se usar classes, deveria ter o encapsulamento dos dados e usar os gets e sets. Mas eu não percebo bem porque é considerado inseguro o acesso directo aos dados? Tem a ver com a possibilidade de aplicar controlos dentro dos metodos sets? Obrigado

1 resposta
solução!

André, Tudo bem contigo? Sim, tem a ver com a possibilidade de aplicar controles dentro dos métodos acessores getters e setters. Principalmente se tua classe for usada por outras pessoas ou sistemas, ele deve ter regras bem definidas, por exemplo como alterar uma atributo que contém o saldo. Digamos que tua classe não permita que o correntista tenha saldo negativo. Se você permitir acesso direto ao atributo, você não tem como garantir que esta regra de negócio seja respeitada e em algum momento isto vai quebrar o teu sistema ou deixar de garantir consistência. Não só isto, pode ser que você queira fazer uma conversão de tipos ou verificar outras condições, digamos que você tenha um outro atributo na tua classe que indica que o correntista tem um valor de Cheque Especial, e isto permita por exemplo sacar mais do que o valor em saldo. Em todos estes casos o acesso direto ao atributo é inseguro, e principalmente ao trabalhar com um sistema maior, você não tem como prever todas as formas de uso da tua classe, de modo que isto pode gerar bugs futuros. Além disto tudo esta forma de acesso é padrão em alguns frameworks, enfim, é uma prática consolidada ao longo dos anos, conforme tiver mais experiência vai perceber a importância de garantir a escrita e leitura dos atributos da tua classe através de métodos acessores e manter privados os atributos da tua classe que não tem importância no mundo externo.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software