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.