Hoje continuaremos com a implementação de métodos em Java. Na parte I deste tutorial aprendemos a criar um método que retorna a média das notas do aluno. O método calculaMedia resgata o valor das notas “setado” no método main, calcula a média e retorna o resultado deste cálculo.
Mas agora queremos saber se esta média é condição suficiente para a aprovação do aluno. E é o que faremos nesta sequência, implementaremos um método que verifica se o aluno foi aprovado ou não.
No tutorial passado em uma única linha calculamos a média das notas e retornamos o resultado deste cálculo. Mas poderíamos ter procedido de outra forma, atribuindo o resultado do cálculo a uma variável e retornando esta variável.
double media = (nota01 + nota02 + nota03 + nota04)/4;
return media;
Este exemplo foi apenas para mostrar a você que existem muitos caminhos que nos levam ao mesmo lugar. E a escolha de um, não invalida o outro.
Antes, porém, de seguirmos com a implementação de um novo método, quero lhe apresentar um dos princípios da orientação a objetos. Este princípio diz que um objeto somente deve fazer operações e implementar métodos que são dele próprio.
E você vai concordar que o método calculaMedia está diretamente relacionado ao contexto de vida acadêmica do aluno. Talvez pudéssemos levar a implementação deste método para outra classe, será mesmo? Acredito sinceramente que neste caso e neste momento a melhor decisão é deixar o método calculaMedia dentro do escopo da classe Aluno.
No entanto, não significa que todas as implementações referentes a média deverão ser alocadas dentro do método calcula média. Então aqui vai mais um princípio da orientação a objetos, aliás, complementar ao primeiro. “Separe as responsabilidades, separe os processos, rotinas e funções. E quanto menor e menos complexo for o método, melhor será para a performance da aplicação que está sendo desenvolvida”.
MÉTODO APROVAÇÃO DO ALUNO
Como de costume o método deverá ter acessibilidade fora da classe (public). E deverá retornar se o aluno está aprovado ou não, ou seja, se sim (true), se não (false). Logo ele possui um retorno do tipo booleano.
public boolean getalunoAprovado(){}
Algo interessante na implementação do métodoalunoAprovado é que ele nos possibilitará interagir com o método calculaMedia. Sim, uma vez que não faz sentido algum refazermos este cálculo se já temos um método que faz isso por nós.
O retorno do método calculaMedia é um tipo double, assim, a variável que vai receber o método deverá ser do tipo double.
double media = this.calculaMedia();
O this vai informar que o elemento que ele precede é um atributo ou método do próprio objeto.
E talvez você fique um pouco frustrado pois queria retornar se o aluno está “Aprovado” ou “Reprovado”. Bom, para isso será necessário alterar o tipo de dado que o método irá retornar. Observe que ele está retornando um boolean. Se você quer imprimir algo diferente de true ou false, então o método deverá retornar um dado do tipo String.
Um método que retorna uma String não é muito usual. Pois esta responsabilidade normalmente é deixada para a tela, cabendo ao método a função de informar um true ou false. E a partir deste retorno poderemos elaborar uma melhor apresentação do retorno para o usuário.
Veja na prática como fica na tela a apresentação para o usuário, porém, lembra da operação ternária? É com ela que vamos tornar a apresentação do resultado mais amigável ao usuário.
System.out.print(aluno01.getalunoAprovado() ? "Aprovado" : "Reprovado");
Haverá momentos em que o resultado será expresso com inúmeras casas decimais, como no exemplo acima. Você poderá resolver arredondando o valor para cima com o método matemático Math.floor() ou arredondando para baixo com o Math.ceil().
EM POUCAS PALAVRAS
Esta é a essência da orientação a objetos onde criamos métodos e rotinas que serão processadas e muitas vezes irão interagir entre si. Para que assim possamos obter o resultado desejado.
É de extrema importância que você compreenda o que estamos fazendo. E saiba responder para você mesmo perguntas como, o porquê de utilizarmos visibilidade public para os métodos? Porque utilizamos o tipo double em um método e boolean em outro? Qual método implementa um parâmetro e qual método não o faz?
Se houver dúvidas a algumas dessas perguntas, revisite o tutorial e leia quantas vezes forem necessárias. Assista as aulas de novo, e de novo. E de novo. O importante é não avançar com dúvidas.
Ainda neste tutorial reaproveitamos o método que efetua o cálculo da média para verificarmos a situação acadêmica do aluno. Ou seja, retornando então se o mesmo está aprovado ou reprovado. E não apenas, relembramos também e reaproveitamos um conhecimento que adquirimos bem lá no início, a técnica do operador ternário.
Caros desenvolvedores espero que tenham gostado, nos vemos em um novo tutorial.