Para responder à questão, considere a situação abaixo.
Em uma instituição de ensino, o Índice de Desempenho Acadêmico do aluno de graduação é obtido calculando-se a média simples das notas nas disciplinas por ele cursadas. Já para os alunos de pós-graduação, que têm conceito em vez de nota na disciplina, o valor do Índice de Desempenho Acadêmico é calculado utilizando-se uma equivalência entre conceito e nota: o conceito A vale 10; B vale 8; C vale 6; D vale 4 e o conceito E vale zero. O analista de TI implementou, em Java, o cálculo do Índice de Desempenho como visto no trecho de código simplificado abaixo.
public abstract class Aluno {
protected boolean indiceAcademico;
public void calculaIndiceAcademico() {
indiceAcademico = 0;
}
// método que retorna um array com as notas das disciplinas do aluno
public abstract double[] carregaNotasDisciplinasAluno();
// método que retorna um array com os conceitos (de A a E)
// das disciplinas do aluno
public abstract char[] carregaConceitosDisciplinasAluno();
}
public class AlunoGraduacao extends Aluno {
public void calculaIndiceAcademico() {
double notasDisciplinas[] = carregaNotasAluno();
double media = 0;
if (notasDisciplinas == null) return 0;
for (double nota : notasDisciplinas) media += nota;
indiceAcademico = media / notasDisciplinas.length;
}
// outros métodos omitidos
}
public class AlunoPosGraduacao extends Aluno {
public void calculaIndiceAcademico() {
char conceitosDisciplinas[] = carregaConceitosDisciplinasAluno();
double media = 0;
if ( conceitosDisciplinas == null) return 0;
for (char conceito : conceitosDisciplinas) {
switch(conceito) {
'A' : media += 10; break;
'B' : media += 8; break;
'C' : media += 6; break;
'D' : media += 4; break;
'E' : media += 2; break;
}
indiceAcademico = media / conceitosDisciplinas.length;
}
}
// outros métodos omitidos
}
Na classe Aluno, o uso da palavra-chave abstract, nos métodos carregaNotasAluno() e carregaConceitosDisciplinasAluno(),