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.

95 POLIMORFISMOÉ UM (extends)Além <strong>de</strong> gerar reaproveitamento <strong>de</strong> código, a utilização <strong>de</strong> herança permite que objetos criadosa partir das classes específicas sejam tratados como objetos da classe genérica.Em outras palavras, a herança entre as classes que mo<strong>de</strong>lam os funcionários permite que objetoscriados a partir das classes Gerente ou Telefonista sejam tratados como objetos da classeFuncionario.No código da classe Gerente utilizamos a palavra extends. Ela po<strong>de</strong> ser interpretada como aexpressão: É UM ou É UMA.1 class Gerente extends Funcionario2 // TODO Gerente É UM FuncionarioCódigo Java 9.5: Gerente.javaComo está explícito no código que todo gerente é um funcionário então po<strong>de</strong>mos criar um objetoda classe Gerente e tratá-lo como um objeto da classe Funcionario também.1 // Criando um objeto da classe Gerente2 Gerente g = new Gerente ();34 // Tratando um gerente como um objeto da classe Funcionario5 Funcionario f = g;Código Java 9.6: GeneralizandoEm alguns lugares do sistema do banco será mais vantajoso tratar um objeto da classe Gerentecomo um objeto da classe Funcionario.Melhorando o controle <strong>de</strong> pontoO registro da entrada ou saída não <strong>de</strong>pen<strong>de</strong> do cargo do funcionário. Não faz sentido criar ummétodo que registre a entrada para cada tipo <strong>de</strong> funcionário, pois eles serão sempre idênticos. Analogamente,não faz sentido criar um método que registre a saída para cada tipo <strong>de</strong> funcionário.Dado que po<strong>de</strong>mos tratar os objetos das classes <strong>de</strong>rivadas <strong>de</strong> Funcionario como sendo objetos<strong>de</strong>ssa classe, po<strong>de</strong>mos implementar um método que seja capaz <strong>de</strong> registrar a entrada <strong>de</strong> qualquerfuncionário in<strong>de</strong>pen<strong>de</strong>ntemente do cargo. Analogamente, po<strong>de</strong>mos fazer o mesmo para o procedimento<strong>de</strong> saída.1 class ControleDePonto {23 public void registraEntrada ( Funcionario f) {4 SimpleDateFormat sdf = new SimpleDateFormat ("dd/MM/ yyyy HH:mm:ss");5 Date agora = new Date ();67 System . out . println (" ENTRADA : " + f. getCodigo ());8 System . out . println (" DATA : " + sdf . format ( agora ));9 }1011 public void registraSaida ( Funcionario f) {www.<strong>k19</strong>.com.br 95

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

Saved successfully!

Ooh no, something went wrong!