Project Notes
Project: Redefinição de métodos
Author: Adalberto Farias e Sérgio Soares
Company: CIn - UFPE
Dicas para a aula de redefinição de métodos
A assinatura de um método funciona como um identificador
do mesmo. Um método é identificado pelo seu nome, quantidade de
parâmetros, tipo de parâmetros e a ordem dos parâmetros.Por
exemplo: suponha que os métodos abaixo foram definidos dentro de uma
mesma classe. Esses métodos são considerados diferentes:
public void creditar(String num, double s)
public void creditar(double s, String num)
public boolean creditar(double v)
Para sobrescrever um método, a subclasse deve
redefinir o método com a mesma assinatura que consta na superclasse.
Por exemplo: uma classe que deseje redefinir o método creditar que retorna
um boolean, deve possuir a seguinte redefinição:
public boolean creditar(double v){
//novo codigo
}
Exercício 1 (Essencial)
- Observe a classe ContaBonificada e note que a mesma redefine o método
creditar() herdado de Conta;
- Alguma modificação nas camadas superiores foi necessária
para lidar com este novo tipo de conta? Ao invocar o método creditar
na Fachada, é necessário algum tratamento especial para contas
bonificadas?
Exercício 2 (Essencial)
- Procure encontrar alguma característica em seu projeto que precise
de redefinição de métodos. Essa característica
pode não ser obrigatória, no entanto vai ajudar um pouco o módulo
avançado do curso identificar essa característica agora.
Exercício 3 (Opcional)
- Na classe Governador definida no exercício da aula de herança, redefina
o método incVoto para a cada 1000 votos incremetar um atributo popularidade
de Governador
- Modifique o programa da aula anterior para permitir a opção de ver a popularidade
de cada Governador na eleição;
- P.S.: Note que a redefinção do método incVoto da maneira como é sugerida
não é necessária, bastaria no método getPopularidade dividirmos o número
de votos por mil. Tal redefinição serve apenas para exercitar o conceito de
redefinição de métodos. Observe também que não mudamos em nada a semantica
do método incVoto em relação ao que a classe Candidato faz com
o número de votos ao chamar tal método.