13 de novembro de 2016


Uma interface funciona como um modelo a ser seguido no desenvolvimento de qualquer classe que a implemente. Em uma interface são definidas somente as assinaturas dos métodos que as classes que vão implementá-la devem ter. Na implementação da interface, a classe que a implementa deve desenvolver o método com a assinatura exata fornecida pela interface implementada.

Dentre os benefícios de se programar para uma interface, temos o fato de que um objeto pode ser substituído facilmente por outro. Verifique o exemplo:

interface I { void f( ); void g( ); void h( ); }

public class A1 implements I { ... }
public class A2 implements I { ... }
public class A3 implements I { ... }
public class A implements I { public T d;... }

Observe a utilização dessas interfaces pelos seguintes métodos:

...
public void s1(I x){ ... x.f( );...; x.g( );...; x.h( ); ... }

public void s2(A x){
... x.f( );...; x.g( );...; x.h( ); ... x.d( ); ...
}

O método s1 recebe como parâmetro um objeto do tipo I e realiza uma execução. Esse método aceita objetos de qualquer classe que implementa I, ou seja, aceita objetos das famílias A, A1, A2 e A3. Enquanto o método s2 só aceita objetos do tipo A porque seu parâmetro é do tipo classe. O método s2 programou para a implementação enquanto o método s1 programou para a interface, privilegiando o reúso.

Podemos concluir que programar para a interface é aumentar o grau de reúso. Se um método utiliza como parâmetro uma interface, ele se torna aplicável a mais objetos. Programando para as classes, produzimos métodos com menor grau de reúso.

0 comentários:

Postar um comentário

Comentários:

Perfil

Formada em Sistemas de Informação e pós-graduada em Engenharia de Software.

Facebook

Views