Java Prova Assunto
Modificadores de acesso e atributos de classe
"A marca do homem imaturo é que ele quer morrer nobremente por uma causa, enquanto a marca do homem maduro é querer viver modestamente por uma."
Ao término desse capítulo, você será capaz de: controlar o acesso aos seus métodos, atributos e construtores através dos modificadores private e public; escrever métodos de acesso a atributos do tipo getters e setters; escrever construtores para suas classes; utilizar variáveis e métodos estáticos.
6.1 - Controlando o acesso
Um dos problemas mais simples que temos no nosso sistema de contas é que o método saca permite sacar mesmo que o limite tenha sido atingido. A seguir você pode lembrar como está a classe Conta: class Conta { int numero; Cliente titular; double saldo; double limite;
// ..
void saca(double quantidade) { this.saldo = this.saldo - quantidade; }
}
A classe a seguir mostra como é possível ultrapassar o limite usando o métodosaca: class TestaContaEstouro1 { public static void main(String args[]) { Conta minhaConta = new Conta(); minhaConta.saldo = 1000.0; minhaConta.limite = 1000.0; minhaConta.saca(50000); // saldo + limite é só 2000!! }
}
Podemos incluir um if dentro do nosso método saca() para evitar a situação que resultaria em uma conta em estado inconsistente, com seu saldo abaixo do limite. Fizemos isso no capítulo de orientação a objetos básica.
Apesar de melhorar bastante, ainda temos um problema mais grave: ninguém garante que o usuário da classe vai sempre utilizar o método para alterar o saldo da conta. O código a seguir ultrapassa o limite diretamente: class TestaContaEstouro2 { public static void main(String args[]) { Conta minhaConta = new Conta(); minhaConta.limite = 100; minhaConta.saldo = -200; //saldo está abaixo dos 100 de limite }
}
Como evitar isso? Uma ideia simples seria testar se não estamos ultrapassando o limite toda vez que formos alterar o saldo:
class