que Diferença um ou dois anos podem trazer. Dois anos e meio atrás, pensei em escrever um livro intitulado Visual Basic 7 Unleashed for Sams. Completar os rascunhos finais do Sams Visual Basic. net Unleashed me lembra que muita coisa mudou no Visual Basic.
para ajudá-lo a fazer a transição o mais completa e completamente possível, eu e outros autores e colaboradores estamos escrevendo muito sobre threading, reflexão, assembléias, COM interop e delegados. Mas, revisando assuntos de programação com um amigo recentemente, lembrei-me de que existem desenvolvedores em todos os níveis, não apenas no nível avançado. Para ser o mais completo possível, então, estou explorando tópicos avançados, bem como tópicos não avançados. (Congratulo-me com consultas de leitores também, e às vezes escrever um artigo com base em várias consultas.)
este artigo é direto ao ponto. Neste artigo, examinaremos interfaces: como defini-las e como implementá-las.
a ideia de uma interface não é nova para COM, mas no Visual Basic 6 cada classe era uma interface COM. No Visual Basic .NET cada classe é uma classe e uma interface é uma interface, mas não uma interface com. As Classes existem há décadas e as interfaces não são da exclusiva competência da COM. Uma classe descreve os campos, propriedades, eventos e métodos que um tipo terá. Uma interface é mais como um portal ou um anexo. Uma interface diz que um tipo implementará esses métodos específicos, mas não define o que é um tipo. Por exemplo, uma casa pode ter uma janela, mas também um carro. Um tipo que implementa um método aberto pode ser definido como algo que tem uma janela, mas os tipos podem definir carros, barcos, casas ou a alma.O Visual Basic 6 não suporta herança ou classes no sentido orientado a objetos do construto. VB6 suporta interfaces com. VB. net, por outro suporta classes e interfaces, então uma distinção teve que ser feita entre os dois idiomas.
definindo Classes e Interfaces em VB. net
os idiomas de classe e interface usam uma sintaxe muito semelhante quando você os define. O exemplo a seguir define uma classe vazia no VB.net, seguida por uma interface vazia.
Public Class AClassEnd ClassPublic Interface AnInterfaceEnd Interface
As Classes podem conter campos, propriedades, eventos e métodos. Esses elementos de uma classe, chamados membros, podem ter modificadores indicando que são públicos, privados, protegidos ou amigos. Todos os membros de uma declaração de interface são públicos e, como resultado, não precisam nem podem ter modificadores de acesso.
Classes contêm código; interfaces não. No entanto, as classes que implementam uma interface contêm código. Lembre-se de que não há instâncias de interfaces no VB .NET. Cada instância é um tipo que implementa uma interface, mas em si não é uma instância da interface. (A partir deste ponto, deixaremos a discussão das aulas por outro tempo e nos concentraremos apenas nas interfaces.)
implementando Interfaces
supondo que tenhamos uma interface chamada AnInterface, só podemos adicionar declarações de método a essa interface. Estendendo a interface da seção anterior, podemos adicionar um método chamado WhoAmI. O resultado é mostrado a seguir.
Public Interface AnInterface Function WhoAmI() As StringEnd Interface
todos os tipos que implementam a interface AnInterface devem implementar todos os métodos declarados nessa interface. Neste exemplo, só precisamos implementar a função WhoAmI. Suponha que AClass implemente AnInterface; precisaríamos implementar WhoAmI. O resultado de implementar AnInterface em AClass produziria o seguinte código.
Public Class AClass Implements AnInterface Public Function WhoAmI() As String Implements AnInterface.WhoAmI Return "AClass" End FunctionEnd Class
a primeira coisa que temos que fazer é indicar que queremos implementar a interface pelo nome. Implementa AnInterface diz aos consumidores que AClass implementará todos os métodos descritos em AnInterface. (O Visual Studio. NET IDE nos lembra que temos que fazer isso também.)
a diferença entre VB6 e VB .NET é que temos que adicionar a cláusula Implements ao corpo da função, conforme mostrado na listagem. A função é declarada como normal, mas a cláusula implementa AnInterface.WhoAmI conclui o contrato entre a classe e a interface.
Pensamentos finais
estruturas podem implementar interfaces em VB.NET também. Se uma classe ou uma estrutura está implementando uma interface, você precisará da instrução Implements conforme demonstrado e precisará implementar todos os métodos definidos na interface usando a cláusula Implements no final do cabeçalho do procedimento para indicar que um método específico satisfaz um método de interface específico.
as Interfaces podem ser muito curtas ou muito longas. Os métodos descritos por uma interface podem ser sub-rotinas ou funções, e podem ser tão elaborados ou tão simples quanto você precisa. Um método pode implementar mais de um método de interfaces. Por fim, lembre-se de que os métodos de interface podem ser chamados com uma referência ao objeto ou com uma referência à interface.
Sobre o Autor
Paulo Kimmel é um escritor freelance para Developer.com e CodeGuru.com. Procure interessantes do Visual Basic .Net tópicos em seu próximo livro Visual Basic .Net Unleashed disponível em janeiro de 2002.
Paul fundou a Software Conceptions, Inc. em 1990. Entre em contato com Paul Kimmel em for help building VB.NET aplicações ou migração de aplicações VB6 para .NET.
# # #