Para utilizar a classe NovoTempo.java, altere a instrução da classe MainTeste.java (parâmetro do método exibirTempo) que cria o referido objeto, conforme abaixo:

new NovoTempo(valorHora, valorMinuto, valorSegundo);

Observe que a referida instrução altera o objeto que está sendo utilizado, contudo as interfaces permanecem inalteradas bem como sua funcionalidade.

O uso do modificador de acesso “private” impede o acesso direto aos campos dessa versão da classe Tempo e da classe NovoTempo. O uso de métodos getters e setters públicos (public) fornecem ao desenvolvedor a oportunidade de alterar a forma como o objeto Tempo e NovoTempo manipulam seus respectivos dados.

Por exemplo, na classe Tempo, o método “getHora” é o retorno direto de um valor armazenado em um atributo específico denominado de “hora”. Já na classe NovoTempo, o mesmo método “getHora” é o retorno de um cálculo matemático que extrai do único atributo da classe, quantas horas existem contidas naquele respectivo valor. Independentemente da forma, Tempo ou NovoTempo, o resultado esperado é o mesmo. O mesmo raciocínio pode ser aplicado aos métodos que realizam incremento como: “incrementaHora”, “incrementaMinuto” e “incrementaSegundo”.

Os métodos encapsuladores fornecem flexibilidade futura, enquanto que o acesso direto a um campo/atributo significa que todo código que o utilize terá de ser alterado, caso a semântica ou sintaxe de um determinado campo/atributo sofra mudanças.

A regra geral do encapsulamento para classes que proporcionam a criação de objetos com representação de estado é de que os atributos, em sua maioria sejam privados e os métodos, em sua maioria, sejam públicos. Obviamente que como regra geral, a mesma não se aplica a todos os casos. Cada caso deve ser analisado em suas várias dimensões de modo que seja possível representá-lo computacionalmente de maneira coerente.
Copyright © 2016 AIEC.