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.

POLIMORFISMOC A P Í T U L O9Controle <strong>de</strong> PontoO sistema do banco <strong>de</strong>ve possuir um controle <strong>de</strong> ponto para registrar a entrada e saída dos funcionários.O pagamento dos funcionários <strong>de</strong>pen<strong>de</strong> <strong>de</strong>ssas informações. Po<strong>de</strong>mos <strong>de</strong>finir uma classepara implementar o funcionamento <strong>de</strong> um relógio <strong>de</strong> ponto.1 class ControleDePonto {23 public void registraEntrada ( Gerente g) {4 SimpleDateFormat sdf = new SimpleDateFormat ("dd/MM/ yyyy HH:mm:ss");5 Date agora = new Date ();67 System . out . println (" ENTRADA : " + g. getCodigo ());8 System . out . println (" DATA : " + sdf . format ( agora ));9 }1011 public void registraSaida ( Gerente g) {12 SimpleDateFormat sdf = new SimpleDateFormat ("dd/MM/ yyyy HH:mm:ss");13 Date agora = new Date ();1415 System . out . println (" SAÍDA : " + g. getCodigo ());16 System . out . println (" DATA : " + sdf . format ( agora ));17 }18 }Código Java 9.1: ControleDePonto.javaA classe acima possui dois métodos: o primeiro para registrar a entrada e o segundo para registrara saída dos gerentes do banco. Contudo, esses dois métodos não são aplicáveis aos outros tipos <strong>de</strong>funcionários.Seguindo essa abordagem, a classe ControleDePonto precisaria <strong>de</strong> um par <strong>de</strong> métodos para cadacargo. Então, a quantida<strong>de</strong> <strong>de</strong> métodos <strong>de</strong>ssa classe seria igual a quantida<strong>de</strong> <strong>de</strong> cargos multiplicadapor dois. Imagine que no banco exista 30 cargos distintos. Teríamos 60 métodos na classeControleDePonto.Os procedimentos <strong>de</strong> registro <strong>de</strong> entrada e saída são idênticos para todos os funcionários. Consequentemente,qualquer alteração na lógica <strong>de</strong>sses procedimentos implicaria na modificação <strong>de</strong>todos os métodos da classe ControleDePonto.Além disso, se o banco <strong>de</strong>finir um novo tipo <strong>de</strong> funcionário, dois novos métodos praticamenteidênticos aos que já existem teriam <strong>de</strong> ser adicionados na classe ControleDePonto. Analogamente,se um cargo <strong>de</strong>ixar <strong>de</strong> existir, os dois métodos correspon<strong>de</strong>ntes da classe ControleDePonto <strong>de</strong>verãoser retirados.www.<strong>k19</strong>.com.br 93

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

Saved successfully!

Ooh no, something went wrong!