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...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

INTERFACES 108tópico. Muitas pessoas se posicionam <strong>de</strong> forma radical <strong>de</strong>fen<strong>de</strong>ndo a utilização <strong>de</strong> interfaces ao invés<strong>de</strong> herança em qualquer situação.Normalmente, esses <strong>de</strong>bates são direcionados na análise do que é melhor para manutenção dasaplicações: utilizar interfaces ou aplicar herança.A grosso modo, priorizar a utilização <strong>de</strong> interfaces permite que alterações pontuais em <strong>de</strong>terminadostrechos do código fonte sejam feitas mais facilmente pois diminui as ocorrências <strong>de</strong> efeitoscolaterais in<strong>de</strong>sejados no resto da aplicação. Por outro lado, priorizar a utilização <strong>de</strong> herança po<strong>de</strong>diminuir a quantida<strong>de</strong> <strong>de</strong> código escrito no início do <strong>de</strong>senvolvimento <strong>de</strong> um projeto.Algumas pessoas propõem a utilização <strong>de</strong> interfaces juntamente com composição para substituirtotalmente o uso <strong>de</strong> herança. De fato, esta é uma alternativa interessante pois possibilita que umtrecho do código fonte <strong>de</strong> uma aplicação possa ser alterado sem causar efeito colateral no restantedo sistema além <strong>de</strong> permitir a reutilização <strong>de</strong> código mais facilmente.Em Java, como não há herança múltipla, muitas vezes, interfaces são apresentadas como umaalternativa para obter um grau maior <strong>de</strong> polimorfismo.Por exemplo, suponha duas árvores <strong>de</strong> herança in<strong>de</strong>pen<strong>de</strong>ntes.Figura 11.2: Duas árvores <strong>de</strong> herança in<strong>de</strong>pen<strong>de</strong>ntesSuponha que os gerentes e as empresas possam acessar o sistema do banco com um nome <strong>de</strong>usuário e uma senha. Seria interessante utilizar um único método para implementar a autenticação<strong>de</strong>sses dois tipos <strong>de</strong> objetos. Mas, qual seria o tipo <strong>de</strong> parâmetro <strong>de</strong>ste método? Lembrando que ele<strong>de</strong>ve aceitar gerentes e empresas.1 class AutenticadorDeUsuario {2 public boolean autentica (??? u) {3 // implementação4 }5 }Código Java 11.8: AutenticadorDeUsuario.javaDe acordo com as árvores <strong>de</strong> herança, não há polimorfismo entre objetos da classe Gerente e da108 www.<strong>k19</strong>.com.br

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

Saved successfully!

Ooh no, something went wrong!