12.07.2015 Views

k19-k11-orientacao-a.. - Departamento de Sistemas e Computação

k19-k11-orientacao-a.. - Departamento de Sistemas e Computação

k19-k11-orientacao-a.. - Departamento de Sistemas e Computação

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

HERANÇA 88para o serviço <strong>de</strong> empréstimo, <strong>de</strong>vemos acrescentar um método para implementar esse cálculo naclasse Emprestimo.1 class Emprestimo extends Servico {2 // ATRIBUTOS34 public double calculaTaxaDeEmprestimo () {5 return this . valor * 0.1;6 }7 }Código Java 8.12: Emprestimo.javaPara os objetos da classe Emprestimo, <strong>de</strong>vemos chamar o método calculaTaxaDeEmprestimo().Para todos os outros serviços, <strong>de</strong>vemos chamar o método calculaTaxa().Mesmo assim, nada impediria que o método calculaTaxa() fosse chamado em um objeto daclasse Emprestimo, pois ela herda esse método da classe Servico. Dessa forma, existe o risco <strong>de</strong>alguém erroneamente chamar o método incorreto.Seria mais seguro “substituir” a implementação do método calculaTaxa() herdado da classeServico na classe Emprestimo. Para isso, basta escrever o método calculaTaxa() também na classeEmprestimo com a mesma assinatura que ele possui na classe Servico.1 class Emprestimo extends Servico {2 // ATRIBUTOS34 public double calculaTaxa () {5 return this . valor * 0.1;6 }7 }Código Java 8.13: Emprestimo.javaOs métodos das classes específicas têm priorida<strong>de</strong> sobre os métodos das classes genéricas. Emoutras palavras, se o método chamado existe na classe filha ele será chamado, caso contrário o métodoserá procurado na classe mãe.Quando <strong>de</strong>finimos um método com a mesma assinatura na classe base e em alguma classe <strong>de</strong>rivada,estamos aplicando o conceito <strong>de</strong> Reescrita <strong>de</strong> Método.Fixo + EspecíficoSuponha que o preço <strong>de</strong> um serviço é a soma <strong>de</strong> um valor fixo mais um valor que <strong>de</strong>pen<strong>de</strong> do tipodo serviço. Por exemplo, o preço do serviço <strong>de</strong> empréstimo é 5 reais mais uma porcentagem do valoremprestado ao cliente. O preço do serviço <strong>de</strong> seguro <strong>de</strong> veículo é 5 reais mais uma porcentagem dovalor do veículo segurado. Em cada classe específica, po<strong>de</strong>mos reescrever o método calculaTaxa().1 class Emprestimo extends Servico {2 // ATRIBUTOS34 public double calculaTaxa () {5 return 5 + this . valor * 0.1;6 }7 }88 www.<strong>k19</strong>.com.br

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!